{
  "f2_skills": {
    "count": 2,
    "skill_packs": [
      "loopify",
      "deploy-your-first-loop"
    ]
  },
  "sample": false,
  "schema_version": "lm-reg-01",
  "skills": [
    {
      "backends": [
        "cron",
        "github_actions",
        "agent_kanban"
      ],
      "category": "authoring",
      "deploys_template": null,
      "description": "Use when a human describes a manual workflow and needs Q&A intake plus a draft Loopmaster loop bundle: loop.yaml, README, AGENT-INSTALL.md, verify.sh, and registry-entry instructions.",
      "group": "authoring",
      "id": "loopify",
      "name": "Loopify",
      "path": "skills/authoring/loopify/SKILL.md",
      "requirements": [
        "repository checkout containing spec/loop.schema.json",
        "free-text workflow description or notes from the human operator",
        "optional artifacts such as scripts, checklists, sample inputs, or previous cron entries",
        "uv with pyyaml and jsonschema, or check-jsonschema with pyyaml, for manifest validation",
        "shell access for deterministic verify.sh dry-runs"
      ],
      "url": "https://loopmaster-ai.pages.dev/skills/loopify/SKILL.md",
      "verification": {
        "details": "no verification evidence found under verification/",
        "status": "unverified"
      }
    },
    {
      "backends": [
        "cron",
        "github_actions",
        "agent_kanban"
      ],
      "category": "authoring",
      "deploys_template": "research-watch",
      "description": "Use when an agent or human wants to deploy the research-watch Loopmaster template through cron, GitHub Actions, or agent-kanban and verify a running loop in one session.",
      "group": "getting-started",
      "id": "deploy-your-first-loop",
      "name": "Deploy Your First Loop",
      "path": "skills/getting-started/deploy-your-first-loop/SKILL.md",
      "requirements": [
        "Python 3",
        "repository checkout containing templates/research-watch",
        "uv for manifest validation",
        "cron for the local scheduler backend, or GitHub Actions / Hermes kanban for alternate backends",
        "no web-search API key for the default research-watch run"
      ],
      "url": "https://loopmaster-ai.pages.dev/skills/deploy-your-first-loop/SKILL.md",
      "verification": {
        "date": "2026-07-07",
        "details": "positive dated skill verification evidence found",
        "evidence_path": "skills/getting-started/deploy-your-first-loop/verification/cron-scratch-transcript.md",
        "evidence_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/skills/getting-started/deploy-your-first-loop/verification/cron-scratch-transcript.md",
        "status": "verified"
      }
    }
  ],
  "templates": [
    {
      "backends": [
        "agent_kanban",
        "cron",
        "github_actions"
      ],
      "doc_path": "templates/agent-usability-test/README.md",
      "doc_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/agent-usability-test/README.md",
      "id": "agent-usability-test",
      "install_path": "templates/agent-usability-test/AGENT-INSTALL.md",
      "install_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/agent-usability-test/AGENT-INSTALL.md",
      "manifest_path": "templates/agent-usability-test/loop.yaml",
      "manifest_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/agent-usability-test/loop.yaml",
      "name": "Agent Usability Test Loop",
      "permissions": {
        "allowed_actions": [
          "read_repo",
          "create_clean_checkout",
          "run_documented_commands",
          "write_transcript",
          "write_friction_report",
          "create_followup_task"
        ],
        "credential_scopes": [
          "repo:read",
          "kanban:create"
        ],
        "forbidden_actions": [
          "use_unlisted_project_context",
          "read_private_credentials",
          "mutate_source_repository_without_approval",
          "claim_verified_without_evidence",
          "publish_public_verified_badge_without_approval"
        ],
        "summary": "6 allowed action(s), 5 forbidden action(s), 2 credential scope(s)"
      },
      "purpose": "Run a clean-room agent through template or site docs and turn transcript evidence into a pass/fail friction report.",
      "spec_version": "0.1",
      "trigger": {
        "default": "before claiming agent-install compatibility or after major template/site doc changes",
        "type": "manual"
      },
      "triggers": [
        "manual",
        "before claiming agent-install compatibility or after major template/site doc changes"
      ],
      "verification": {
        "age_days": 0,
        "date": "2026-07-07",
        "details": "positive dated evidence found",
        "evidence_path": "templates/agent-usability-test/verification/dry-run-checklist.md",
        "evidence_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/agent-usability-test/verification/dry-run-checklist.md",
        "rule": "positive verification evidence auto-stales after 30 days",
        "stale_after": "2026-08-06",
        "status": "verified"
      }
    },
    {
      "backends": [
        "agent_kanban",
        "cron",
        "github_actions"
      ],
      "doc_path": "templates/ci-repair/README.md",
      "doc_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/ci-repair/README.md",
      "id": "ci-repair",
      "install_path": "templates/ci-repair/AGENT-INSTALL.md",
      "install_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/ci-repair/AGENT-INSTALL.md",
      "manifest_path": "templates/ci-repair/loop.yaml",
      "manifest_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/ci-repair/loop.yaml",
      "name": "CI Repair Loop",
      "permissions": {
        "allowed_actions": [
          "read_ci_status",
          "read_ci_logs",
          "read_repository_files",
          "run_local_tests",
          "modify_test_code",
          "propose_non_test_code_patch",
          "push_repair_branch",
          "open_pull_request",
          "create_follow_up_task"
        ],
        "credential_scopes": [
          "repo:contents:write",
          "pull_request:write",
          "actions:read",
          "checks:read",
          "kanban:create"
        ],
        "forbidden_actions": [
          "disable_required_checks_without_approval",
          "weaken_assertions_without_root_cause_evidence",
          "delete_failing_tests_to_make_ci_green",
          "mask_errors_with_blanket_retries_or_ignores",
          "merge_non_test_code_without_human_diff_review",
          "expose_credentials_in_logs_or_comments"
        ],
        "summary": "9 allowed action(s), 6 forbidden action(s), 5 credential scope(s)"
      },
      "purpose": "Detect a failing CI signal, inspect the failure evidence, make the smallest justified patch, rerun verification, and open or update a pull request without masking the real issue.",
      "spec_version": "0.1",
      "trigger": {
        "default": "failing pull request or protected-branch check",
        "event": "check_suite_failure",
        "type": "ci_event"
      },
      "triggers": [
        "ci_event",
        "failing pull request or protected-branch check",
        "check_suite_failure"
      ],
      "verification": {
        "age_days": 0,
        "date": "2026-07-07",
        "details": "positive dated evidence found",
        "evidence_path": "templates/ci-repair/verification/dry-read-ambiguity-checklist.md",
        "evidence_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/ci-repair/verification/dry-read-ambiguity-checklist.md",
        "rule": "positive verification evidence auto-stales after 30 days",
        "stale_after": "2026-08-06",
        "status": "verified"
      }
    },
    {
      "backends": [
        "agent_kanban",
        "cron",
        "github_actions"
      ],
      "doc_path": "templates/content-freshness/README.md",
      "doc_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/content-freshness/README.md",
      "id": "content-freshness",
      "install_path": "templates/content-freshness/AGENT-INSTALL.md",
      "install_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/content-freshness/AGENT-INSTALL.md",
      "manifest_path": "templates/content-freshness/loop.yaml",
      "manifest_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/content-freshness/loop.yaml",
      "name": "Content Freshness Loop",
      "permissions": {
        "allowed_actions": [
          "read_repo",
          "read_web",
          "write_report",
          "write_state",
          "create_proposal_branch",
          "create_task"
        ],
        "credential_scopes": [
          "repo:contents:write",
          "pull_request:write",
          "kanban:create"
        ],
        "forbidden_actions": [
          "publish_publicly_without_approval",
          "rewrite_content_without_review",
          "spend_money",
          "delete_user_data",
          "mutate_source_systems"
        ],
        "summary": "6 allowed action(s), 5 forbidden action(s), 3 credential scope(s)"
      },
      "purpose": "Audit repository content for stale pages, dead links, superseded claims, and missing ownership evidence, then propose source-backed updates without publishing rewrites automatically.",
      "spec_version": "0.1",
      "trigger": {
        "default": "monthly",
        "schedule": "0 10 1 * *",
        "type": "schedule"
      },
      "triggers": [
        "schedule",
        "monthly",
        "0 10 1 * *"
      ],
      "verification": {
        "age_days": 0,
        "date": "2026-07-07",
        "details": "positive dated evidence found",
        "evidence_path": "templates/content-freshness/verification/dry-read-ambiguity-checklist.md",
        "evidence_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/content-freshness/verification/dry-read-ambiguity-checklist.md",
        "rule": "positive verification evidence auto-stales after 30 days",
        "stale_after": "2026-08-06",
        "status": "verified"
      }
    },
    {
      "backends": [
        "agent_kanban",
        "cron",
        "github_actions"
      ],
      "doc_path": "templates/dependency-release-monitor/README.md",
      "doc_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/dependency-release-monitor/README.md",
      "id": "dependency-release-monitor",
      "install_path": "templates/dependency-release-monitor/AGENT-INSTALL.md",
      "install_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/dependency-release-monitor/AGENT-INSTALL.md",
      "manifest_path": "templates/dependency-release-monitor/loop.yaml",
      "manifest_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/dependency-release-monitor/loop.yaml",
      "name": "Dependency Release Monitor Loop",
      "permissions": {
        "allowed_actions": [
          "read_web",
          "read_repo",
          "read_file",
          "write_report",
          "write_state",
          "create_proposal_branch",
          "create_task"
        ],
        "credential_scopes": [
          "repo:contents:write",
          "pull_request:write",
          "kanban:create"
        ],
        "forbidden_actions": [
          "merge_dependency_changes_without_approval",
          "change_credentials_without_approval",
          "publish_publicly_without_approval",
          "spend_money",
          "delete_user_data",
          "mutate_upstream_projects"
        ],
        "summary": "7 allowed action(s), 6 forbidden action(s), 3 credential scope(s)"
      },
      "purpose": "Watch upstream releases and changelogs for declared dependencies, assess project impact, and recommend act or ignore with confidence and risk.",
      "spec_version": "0.1",
      "trigger": {
        "default": "weekly",
        "schedule": "0 10 * * 1",
        "type": "schedule"
      },
      "triggers": [
        "schedule",
        "weekly",
        "0 10 * * 1"
      ],
      "verification": {
        "age_days": 0,
        "date": "2026-07-07",
        "details": "positive dated evidence found",
        "evidence_path": "templates/dependency-release-monitor/verification/dry-read-ambiguity-checklist.md",
        "evidence_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/dependency-release-monitor/verification/dry-read-ambiguity-checklist.md",
        "rule": "positive verification evidence auto-stales after 30 days",
        "stale_after": "2026-08-06",
        "status": "verified"
      }
    },
    {
      "backends": [
        "agent_kanban",
        "github_actions"
      ],
      "doc_path": "loops/README.md",
      "doc_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/loops/README.md",
      "id": "landscape-watch",
      "install_path": "loops/AGENT-INSTALL.md",
      "install_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/loops/AGENT-INSTALL.md",
      "manifest_path": "loops/landscape-watch.loop.yaml",
      "manifest_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/loops/landscape-watch.loop.yaml",
      "name": "Landscape Watch Loop",
      "permissions": {
        "allowed_actions": [
          "read_web",
          "read_repo",
          "write_report",
          "write_state",
          "create_proposal_branch",
          "create_task"
        ],
        "credential_scopes": [
          "repo:contents:write",
          "pull_request:write",
          "kanban:create"
        ],
        "forbidden_actions": [
          "publish_publicly_without_approval",
          "spend_money",
          "delete_user_data",
          "mutate_source_systems",
          "change_public_positioning_without_approval"
        ],
        "summary": "6 allowed action(s), 5 forbidden action(s), 3 credential scope(s)"
      },
      "purpose": "Loopmaster's own instance of the research-watch template. Polls the AI loop / agent-tooling landscape (frameworks, protocols, labs) weekly and turns new, high-signal changes into cited findings reports in docs/research/. Findings publish autonomously; public positioning or recommendation changes require human approval.\n",
      "spec_version": "0.1",
      "trigger": {
        "default": "weekly",
        "schedule": "30 9 * * 1",
        "type": "schedule"
      },
      "triggers": [
        "schedule",
        "weekly",
        "30 9 * * 1"
      ],
      "verification": {
        "details": "no positive verification evidence found under verification/",
        "rule": "positive verification evidence with a YYYY-MM-DD date is required and auto-stales after 30 days",
        "status": "unverified"
      }
    },
    {
      "backends": [
        "github_actions"
      ],
      "doc_path": "loops/README.md",
      "doc_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/loops/README.md",
      "id": "link-audit",
      "install_path": "loops/AGENT-INSTALL.md",
      "install_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/loops/AGENT-INSTALL.md",
      "manifest_path": "loops/link-audit.loop.yaml",
      "manifest_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/loops/link-audit.loop.yaml",
      "name": "Link & Source Audit Loop",
      "permissions": {
        "allowed_actions": [
          "read_repo",
          "read_web",
          "write_report",
          "update_same_host_redirects",
          "stamp_resource_status"
        ],
        "credential_scopes": [
          "contents:write_for_scheduled_report_commits"
        ],
        "forbidden_actions": [
          "replace_sources_without_approval",
          "publish_publicly_without_approval",
          "spend_money",
          "change_credentials"
        ],
        "summary": "5 allowed action(s), 4 forbidden action(s), 1 credential scope(s)"
      },
      "purpose": "Check Loopmaster documentation and resource URLs, update safe maintenance stamps, and escalate source replacement.",
      "spec_version": "0.1",
      "trigger": {
        "default": "weekly",
        "schedule": "23 10 * * 1",
        "type": "schedule"
      },
      "triggers": [
        "schedule",
        "weekly",
        "23 10 * * 1"
      ],
      "verification": {
        "age_days": 0,
        "date": "2026-07-07",
        "details": "positive dated evidence found",
        "evidence_path": "loops/log/2026-07-07-link-audit.md",
        "evidence_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/loops/log/2026-07-07-link-audit.md",
        "rule": "positive verification evidence auto-stales after 30 days",
        "stale_after": "2026-08-06",
        "status": "verified"
      }
    },
    {
      "backends": [
        "agent_kanban",
        "github_actions"
      ],
      "doc_path": "loops/README.md",
      "doc_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/loops/README.md",
      "id": "loopmaster-content-freshness",
      "install_path": "loops/AGENT-INSTALL.md",
      "install_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/loops/AGENT-INSTALL.md",
      "manifest_path": "loops/loopmaster-content-freshness.loop.yaml",
      "manifest_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/loops/loopmaster-content-freshness.loop.yaml",
      "name": "Loopmaster Content Freshness Loop",
      "permissions": {
        "allowed_actions": [
          "read_repo",
          "read_web",
          "write_report",
          "write_state",
          "create_proposal_branch",
          "create_task"
        ],
        "credential_scopes": [
          "repo:contents:write",
          "pull_request:write",
          "kanban:create"
        ],
        "forbidden_actions": [
          "publish_publicly_without_approval",
          "rewrite_content_without_review",
          "change_public_positioning_without_approval",
          "spend_money",
          "delete_user_data",
          "mutate_source_systems"
        ],
        "summary": "6 allowed action(s), 6 forbidden action(s), 3 credential scope(s)"
      },
      "purpose": "Audit Loopmaster's public docs, learning content, resource metadata, and loop guides for stale claims, broken links, and unresolved freshness markers; report proposals without rewriting public positioning autonomously.",
      "spec_version": "0.1",
      "trigger": {
        "default": "monthly",
        "schedule": "0 10 1 * *",
        "type": "schedule"
      },
      "triggers": [
        "schedule",
        "monthly",
        "0 10 1 * *"
      ],
      "verification": {
        "details": "no positive verification evidence found under verification/",
        "rule": "positive verification evidence with a YYYY-MM-DD date is required and auto-stales after 30 days",
        "status": "unverified"
      }
    },
    {
      "backends": [
        "agent_kanban",
        "cron",
        "github_actions"
      ],
      "doc_path": "templates/research-watch/README.md",
      "doc_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/research-watch/README.md",
      "id": "research-watch",
      "install_path": "templates/research-watch/AGENT-INSTALL.md",
      "install_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/research-watch/AGENT-INSTALL.md",
      "manifest_path": "templates/research-watch/loop.yaml",
      "manifest_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/research-watch/loop.yaml",
      "name": "Research Watch Loop",
      "permissions": {
        "allowed_actions": [
          "read_web",
          "read_repo",
          "write_report",
          "write_state",
          "create_proposal_branch",
          "create_task"
        ],
        "credential_scopes": [
          "repo:contents:write",
          "pull_request:write",
          "kanban:create"
        ],
        "forbidden_actions": [
          "publish_publicly_without_approval",
          "spend_money",
          "delete_user_data",
          "mutate_source_systems"
        ],
        "summary": "6 allowed action(s), 4 forbidden action(s), 3 credential scope(s)"
      },
      "purpose": "Monitor trusted sources and turn new, high-signal research changes into cited findings reports and optional follow-up tasks.",
      "spec_version": "0.1",
      "trigger": {
        "default": "weekly",
        "schedule": "0 9 * * 1",
        "type": "schedule"
      },
      "triggers": [
        "schedule",
        "weekly",
        "0 9 * * 1"
      ],
      "verification": {
        "age_days": 0,
        "date": "2026-07-07",
        "details": "positive dated evidence found",
        "evidence_path": "templates/research-watch/verification/dry-read-ambiguity-checklist.md",
        "evidence_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/templates/research-watch/verification/dry-read-ambiguity-checklist.md",
        "rule": "positive verification evidence auto-stales after 30 days",
        "stale_after": "2026-08-06",
        "status": "verified"
      }
    },
    {
      "backends": [
        "agent_kanban",
        "cron",
        "github_actions"
      ],
      "doc_path": "loops/README.md",
      "doc_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/loops/README.md",
      "id": "resource-discovery",
      "install_path": "loops/AGENT-INSTALL.md",
      "install_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/loops/AGENT-INSTALL.md",
      "manifest_path": "loops/resource-discovery.loop.yaml",
      "manifest_url": "https://github.com/chrismaddern/loopmaster.ai/blob/main/loops/resource-discovery.loop.yaml",
      "name": "Resource Discovery Loop",
      "permissions": {
        "allowed_actions": [
          "read_web",
          "read_repo",
          "write_report",
          "write_state",
          "create_proposal_branch",
          "create_task"
        ],
        "credential_scopes": [
          "repo:contents:write",
          "pull_request:write",
          "kanban:create"
        ],
        "forbidden_actions": [
          "publish_publicly_without_approval",
          "merge_resource_entries_without_approval",
          "spend_money",
          "delete_user_data",
          "mutate_source_systems"
        ],
        "summary": "6 allowed action(s), 5 forbidden action(s), 3 credential scope(s)"
      },
      "purpose": "Sweep committed sources and rotating queries each week, score candidates against the resource rubric, and propose ready-to-merge entries for the curated library without publishing them.",
      "spec_version": "0.1",
      "trigger": {
        "default": "weekly",
        "schedule": "30 9 * * 1",
        "type": "schedule"
      },
      "triggers": [
        "schedule",
        "weekly",
        "30 9 * * 1"
      ],
      "verification": {
        "details": "no positive verification evidence found under verification/",
        "rule": "positive verification evidence with a YYYY-MM-DD date is required and auto-stales after 30 days",
        "status": "unverified"
      }
    }
  ]
}
