[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MZ45KQ5SFKDEGY37WEX358":3,"skill-same:01M6MZ45KQ5SFKDEGY37WEX358":77},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":56,"updatedAt":57,"install":58,"resources":70},"01M6MZ45KQ5SFKDEGY37WEX358","sole-dev-merge",null,"GitHub PR merge for a sole developer — local fixes and checks, code and security review, push and PR, CI watch, merge and cleanup, through one tested script (sdm.sh). Run only when the user asks to merge a branch or PR.","snewhouse\u002Faa-ma-forge","snewhouse","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6317143?v=4","01M6MYYWF28C4KBQHHWB9SC6TS","Stephen J Newhouse","01M6MYYWJWQMDN2ZPFMJ584SSM",6,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fsnewhouse\u002Faa-ma-forge\u002Fblob\u002Fmain\u002Fclaude-code\u002Fskills\u002Fsole-dev-merge\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"sole dev merge","merge","dev","only","fixes","for","true","ci watch","pr merge","github pr merge","local","github pr","review","branch","ci","push","code","cleanup","pr","github","2026-11-10 10:12:30",false,"---\nname: sole-dev-merge\ndescription: GitHub PR merge for a sole developer — local fixes and checks, code and security review, push and PR, CI watch, merge and cleanup, through one tested script (sdm.sh). Run only when the user asks to merge a branch or PR.\ndisable-model-invocation: true\n---\n\n# \u002Fsole-dev-merge — check, review, ship, finish\n\nThe work is done by `scripts\u002Fsdm.sh` (ADR-0024; tests in `tests\u002Fcommands\u002Fsdm\u002F`). This file\nsays when to run each step and what to do with its output. The full list of `STATUS:` and\n`ABORT:` lines, with their meaning, is `sdm.sh help`. GitHub only.\n\n## Rules\n\n- **Which copy.** Inside aa-ma-forge, run the branch's own\n  `claude-code\u002Fskills\u002Fsole-dev-merge\u002Fscripts\u002Fsdm.sh` (the code being merged is the code that\n  merges it). Anywhere else, `~\u002F.claude\u002Fskills\u002Fsole-dev-merge\u002Fscripts\u002Fsdm.sh`. Below, `sdm.sh`\n  means that path.\n- **One Bash call per step.** `ship` pushes the branch and opens or updates the PR.\n  `finish` merges the PR and deletes the remote branch. Run `check`, `ship` and `finish` as\n  three separate Bash calls, never chained, so each side effect is visible to the operator.\n- **Exit codes.** Exit 1 with an `ABORT: …` line: stop, report it, fix the cause, start\n  again at step 1. Exit 0 with `STATUS: …` lines: act on each one, not only the last (table\n  below). Any other non-zero exit (git or gh failed with no ABORT line): stop and report stderr.\n- **No merge or delete outside sdm.sh.** Never run `gh pr merge`, `gh api …\u002Fmerge`,\n  `gh pr edit`, `git push --delete` or `git push origin :\u003Cbranch>`, and never force-push.\n  A failed step is re-run through `sdm.sh`.\n\n## Step 1 — check\n\n```\nsdm.sh check\n```\n\nIt formats in-scope Python with ruff, runs the repo's pre-commit hooks on the branch's files,\nand commits any in-scope fixes as `chore(scope): pre-PR auto-fixes`. Success prints\n`check OK (branch=\u003Cb>, base=\u003Cref>, ahead=\u003Cn>)`; keep `\u003Cref>` for the review diff.\nA non-zero `check: pre-commit rc=\u003Cn>` is reported, not fatal: give it to C1; CI gates it.\n\n**Inspect the auto-fix commit (L-031).** When `check` says it committed in-scope auto-fixes,\ncompare `git show --stat HEAD` with the branch's own changes (`git diff --stat \u003Cref>...HEAD~1`),\nand read `git show HEAD -- \u003Cfile>` for any file the branch only partly changed. ruff formats\nwhole files, so the commit can change lines the branch never touched. If it does, stop and ask\nthe user: that drift belongs in its own `chore(format)` PR from the default branch. Re-running\n`check` would only make the same commit again.\n\n**Out-of-scope ABORT.** `ABORT: check: files outside the branch changed: …` means a fixer changed\nfiles the branch does not touch. Nothing is committed, so the tree is left dirty and a bare re-run\nstops at \"Uncommitted changes\". Work in the checkout `check` ran in (its toplevel), never another:\n1. Show the user the listed files, `git status --porcelain` and `git diff --stat`. The tree was\n   clean when `check` started, so these should all be a fixer's; an edit saved while `check` ran\n   is not. Ask the user before discarding anything.\n2. Once the user agrees, `git restore --staged --worktree -- .` from that toplevel undoes the\n   tracked changes. Remove an untracked file only with the user's yes.\n3. Fix the cause (the hook that touched other files), or commit that change on the branch, but\n   only with the user's yes: the same fixer makes the same ABORT again. Then start again at step 1.\n\n## Step 2 — review (C1 + C2) and the stop rule\n\n1. Make a private run dir with `umask 077; mktemp -d` and use `\u003Cdir>\u002Fnotes.md` as the notes\n   file. Note the HEAD you review (`git rev-parse HEAD`): round 2 needs it.\n2. In one message, dispatch two agents on `git diff \u003Cref>...HEAD`:\n   - **C1** `code-reviewer`: correctness, regressions, scope, KISS\u002FDRY, dead code.\n   - **C2** `security-auditor`: input validation, secrets, injection, path handling, OWASP.\n   - Both apply `security-auditor.md` § Threat model (local tooling unless the plan's\n     Contract says otherwise): CRITICAL\u002FHIGH need a concrete failure path reachable under it.\n     Each finding is one line, `[CRITICAL|HIGH|MEDIUM|LOW] \u003Cclaim> — \u003Cpath>:\u003Cline>`, followed\n     by one line giving the failure path.\n3. Triage:\n   - **CRITICAL\u002FHIGH** go to the user with `AskUserQuestion`: Apply \u002F Dispute \u002F Defer.\n     Apply → fix it test-first, commit, run step 1 again, then round 2.\n   - **MEDIUM\u002FLOW** never restart the run. They go to the notes file and, after the merge,\n     to one TODOS.md entry for this PR (no TODOS.md in the repo: list them in your final\n     report instead).\n4. **Round 2** reviews only the fix: `git diff \u003Cround-1 HEAD>..HEAD`.\n5. **At most 2 rounds.** There is no round 3. If a CRITICAL\u002FHIGH is still open after\n   round 2, do not run `ship`: report it to the user and re-plan.\n6. Never run `ship` while an accepted CRITICAL\u002FHIGH is unfixed.\n\nNotes file rules (it becomes the PR body's \"Reviewer notes\"):\n- Append; never overwrite. Start each round with a `### Round \u003Cn>` line.\n- One line per finding, plus the rounds' totals. For a security finding, name the class and\n  `path:line`, not the steps to exploit it. Never quote a secret, token or credential value.\n- No GitHub closing keywords (`Closes #12`, `Fixes #12`): they would close an issue on\n  merge (accepted risk, ADR-0024).\n\n## Step 3 — ship\n\n```\nsdm.sh ship --notes \u003Cdir>\u002Fnotes.md\n```\n\n`ship` pushes the branch, then creates the PR or updates the open PR's body, then waits\nfor CI. When an AA-MA plan is active, prefix `AA_MA_PLAN_DIR=.claude\u002Fdev\u002Factive\u002F\u003Ctask>` to\nadd a \"Plan context\" line to the body. It prints `PR_NUM=\u003Cn>`, `PR_URL=\u003Curl>` and finally\n`CI_STATE=green|failed|timeout`.\n- `green` → step 4.\n- `failed` → report the `diagnostic:` line. Fix the failure on the branch test-first, then\n  start again at step 1. A re-run of `ship` updates the same PR's body.\n- `timeout` → CI is still running. Run step 4 later; `finish` gates on CI itself.\n\n## Step 4 — finish\n\n```\nsdm.sh finish \u003CPR_NUM>\n```\n\n`finish` merges only when every check-run at HEAD has completed, at least one succeeded and\nnone failed. It merges with `--match-head-commit`, deletes the remote branch under a lease,\nchecks with `ls-remote` that the branch is gone, then fast-forwards the default branch.\nIt can print more than one STATUS line (for example `BRANCH_NOT_DELETED`, then `STATUS: OK`\nfor the cleanup); act on each. In a linked worktree `STATUS: OK` ends ` worktree=\u003Cpath>`, and\n`finish` prints \"Operator cleanup\" commands (`worktree remove`, `branch -D`). Show them to\nthe user; do not run them unasked.\n\n## What to do with a STATUS line\n\n| Line | Do |\n|---|---|\n| `STATUS: AUTH_REQUIRED` | Ask the user to run `! gh auth login`, then `ship` again. |\n| `STATUS: PR_BODY_NOT_UPDATED … reason=patch-failed` or `readback-differs` | `ship` went on. Tell the user to set the PR body by hand before `finish`. |\n| `STATUS: PR_BODY_NOT_UPDATED … reason=not-this-branch`, `no-pr-number`, `not-open` or `head-not-updated` | `ship` stopped. Report it; never edit another branch's or a closed PR. |\n| `STATUS: CI_FAILED` | Nothing is merged. Report the URL and `gh pr checks \u003Cn>`. |\n| `STATUS: CI_TIMEOUT`, `STATUS: CI_NOT_DONE` | Nothing is merged. Run `sdm.sh finish \u003Cn>` later. |\n| `STATUS: MERGE_FAILED` | Nothing is deleted. Report the state and URL. If the remote head moved, fetch, review what changed and start again at step 1; never force-push. A conflict or branch protection goes to the user. |\n| `STATUS: BRANCH_NOT_DELETED` | Merged, but the remote branch is still there. If it moved after the merge, it holds commits not on the default branch: report them; the user decides. If only the delete failed: from a linked worktree, run `sdm.sh finish \u003Cn>` again (a PR already MERGED at HEAD gets no merge call, no strategy or check-runs read, only the delete and cleanup); from a plain checkout the local branch is gone, so tell the user to delete the remote branch. |\n| `STATUS: MAIN_NOT_UPDATED`, `STATUS: MAIN_CHECKOUT_DIRTY` | Merged. The default branch was not updated: report the reason; the user updates it. |\n\nAny other line: read `sdm.sh help`.\n\n## After the merge\n\nFile the MEDIUM\u002FLOW findings (step 2) as one TODOS.md entry in the next commit on the\ndefault branch, or on the active plan's next branch (L-037).\n\n## Settings\n\nEnvironment variables, all optional, operator-set (defaults and validation: the top of\n`sdm.sh`):\n- `CI_POLL_TIMEOUT`: the CI watch cap.\n- `CI_APPEAR_TIMEOUT_S` and `CI_APPEAR_INTERVAL_S`: the wait for checks to appear.\n- `AA_MA_PLAN_DIR`: adds the plan context line.\n- `AA_MA_FOOTER_HELPER`: the footer helper for the auto-fix commit; else the repo's copy,\n  else `${CLAUDE_HOME:-~\u002F.claude}\u002Fhooks\u002Flib\u002Faa-ma-footer.sh`, else `[ad-hoc]`.\n\nHistory: the stage-block design this replaces is ADR-0008; why one script is ADR-0024.\n","# \u002Fsole-dev-merge — check, review, ship, finish\n\nThe work is done by `scripts\u002Fsdm.sh` (ADR-0024; tests in `tests\u002Fcommands\u002Fsdm\u002F`). This file\nsays when to run each step and what to do with its output. The full list of `STATUS:` and\n`ABORT:` lines, with their meaning, is `sdm.sh help`. GitHub only.\n\n## Rules\n\n- **Which copy.** Inside aa-ma-forge, run the branch's own\n  `claude-code\u002Fskills\u002Fsole-dev-merge\u002Fscripts\u002Fsdm.sh` (the code being merged is the code that\n  merges it). Anywhere else, `~\u002F.claude\u002Fskills\u002Fsole-dev-merge\u002Fscripts\u002Fsdm.sh`. Below, `sdm.sh`\n  means that path.\n- **One Bash call per step.** `ship` pushes the branch and opens or updates the PR.\n  `finish` merges the PR and deletes the remote branch. Run `check`, `ship` and `finish` as\n  three separate Bash calls, never chained, so each side effect is visible to the operator.\n- **Exit codes.** Exit 1 with an `ABORT: …` line: stop, report it, fix the cause, start\n  again at step 1. Exit 0 with `STATUS: …` lines: act on each one, not only the last (table\n  below). Any other non-zero exit (git or gh failed with no ABORT line): stop and report stderr.\n- **No merge or delete outside sdm.sh.** Never run `gh pr merge`, `gh api …\u002Fmerge`,\n  `gh pr edit`, `git push --delete` or `git push origin :\u003Cbranch>`, and never force-push.\n  A failed step is re-run through `sdm.sh`.\n\n## Step 1 — check\n\n```\nsdm.sh check\n```\n\nIt formats in-scope Python with ruff, runs the repo's pre-commit hooks on the branch's files,\nand commits any in-scope fixes as `chore(scope): pre-PR auto-fixes`. Success prints\n`check OK (branch=\u003Cb>, base=\u003Cref>, ahead=\u003Cn>)`; keep `\u003Cref>` for the review diff.\nA non-zero `check: pre-commit rc=\u003Cn>` is reported, not fatal: give it to C1; CI gates it.\n\n**Inspect the auto-fix commit (L-031).** When `check` says it committed in-scope auto-fixes,\ncompare `git show --stat HEAD` with the branch's own changes (`git diff --stat \u003Cref>...HEAD~1`),\nand read `git show HEAD -- \u003Cfile>` for any file the branch only partly changed. ruff formats\nwhole files, so the commit can change lines the branch never touched. If it does, stop and ask\nthe user: that drift belongs in its own `chore(format)` PR from the default branch. Re-running\n`check` would only make the same commit again.\n\n**Out-of-scope ABORT.** `ABORT: check: files outside the branch changed: …` means a fixer changed\nfiles the branch does not touch. Nothing is committed, so the tree is left dirty and a bare re-run\nstops at \"Uncommitted changes\". Work in the checkout `check` ran in (its toplevel), never another:\n1. Show the user the listed files, `git status --porcelain` and `git diff --stat`. The tree was\n   clean when `check` started, so these should all be a fixer's; an edit saved while `check` ran\n   is not. Ask the user before discarding anything.\n2. Once the user agrees, `git restore --staged --worktree -- .` from that toplevel undoes the\n   tracked changes. Remove an untracked file only with the user's yes.\n3. Fix the cause (the hook that touched other files), or commit that change on the branch, but\n   only with the user's yes: the same fixer makes the same ABORT again. Then start again at step 1.\n\n## Step 2 — review (C1 + C2) and the stop rule\n\n1. Make a private run dir with `umask 077; mktemp -d` and use `\u003Cdir>\u002Fnotes.md` as the notes\n   file. Note the HEAD you review (`git rev-parse HEAD`): round 2 needs it.\n2. In one message, dispatch two agents on `git diff \u003Cref>...HEAD`:\n   - **C1** `code-reviewer`: correctness, regressions, scope, KISS\u002FDRY, dead code.\n   - **C2** `security-auditor`: input validation, secrets, injection, path handling, OWASP.\n   - Both apply `security-auditor.md` § Threat model (local tooling unless the plan's\n     Contract says otherwise): CRITICAL\u002FHIGH need a concrete failure path reachable under it.\n     Each finding is one line, `[CRITICAL|HIGH|MEDIUM|LOW] \u003Cclaim> — \u003Cpath>:\u003Cline>`, followed\n     by one line giving the failure path.\n3. Triage:\n   - **CRITICAL\u002FHIGH** go to the user with `AskUserQuestion`: Apply \u002F Dispute \u002F Defer.\n     Apply → fix it test-first, commit, run step 1 again, then round 2.\n   - **MEDIUM\u002FLOW** never restart the run. They go to the notes file and, after the merge,\n     to one TODOS.md entry for this PR (no TODOS.md in the repo: list them in your final\n     report instead).\n4. **Round 2** reviews only the fix: `git diff \u003Cround-1 HEAD>..HEAD`.\n5. **At most 2 rounds.** There is no round 3. If a CRITICAL\u002FHIGH is still open after\n   round 2, do not run `ship`: report it to the user and re-plan.\n6. Never run `ship` while an accepted CRITICAL\u002FHIGH is unfixed.\n\nNotes file rules (it becomes the PR body's \"Reviewer notes\"):\n- Append; never overwrite. Start each round with a `### Round \u003Cn>` line.\n- One line per finding, plus the rounds' totals. For a security finding, name the class and\n  `path:line`, not the steps to exploit it. Never quote a secret, token or credential value.\n- No GitHub closing keywords (`Closes #12`, `Fixes #12`): they would close an issue on\n  merge (accepted risk, ADR-0024).\n\n## Step 3 — ship\n\n```\nsdm.sh ship --notes \u003Cdir>\u002Fnotes.md\n```\n\n`ship` pushes the branch, then creates the PR or updates the open PR's body, then waits\nfor CI. When an AA-MA plan is active, prefix `AA_MA_PLAN_DIR=.claude\u002Fdev\u002Factive\u002F\u003Ctask>` to\nadd a \"Plan context\" line to the body. It prints `PR_NUM=\u003Cn>`, `PR_URL=\u003Curl>` and finally\n`CI_STATE=green|failed|timeout`.\n- `green` → step 4.\n- `failed` → report the `diagnostic:` line. Fix the failure on the branch test-first, then\n  start again at step 1. A re-run of `ship` updates the same PR's body.\n- `timeout` → CI is still running. Run step 4 later; `finish` gates on CI itself.\n\n## Step 4 — finish\n\n```\nsdm.sh finish \u003CPR_NUM>\n```\n\n`finish` merges only when every check-run at HEAD has completed, at least one succeeded and\nnone failed. It merges with `--match-head-commit`, deletes the remote branch under a lease,\nchecks with `ls-remote` that the branch is gone, then fast-forwards the default branch.\nIt can print more than one STATUS line (for example `BRANCH_NOT_DELETED`, then `STATUS: OK`\nfor the cleanup); act on each. In a linked worktree `STATUS: OK` ends ` worktree=\u003Cpath>`, and\n`finish` prints \"Operator cleanup\" commands (`worktree remove`, `branch -D`). Show them to\nthe user; do not run them unasked.\n\n## What to do with a STATUS line\n\n| Line | Do |\n|---|---|\n| `STATUS: AUTH_REQUIRED` | Ask the user to run `! gh auth login`, then `ship` again. |\n| `STATUS: PR_BODY_NOT_UPDATED … reason=patch-failed` or `readback-differs` | `ship` went on. Tell the user to set the PR body by hand before `finish`. |\n| `STATUS: PR_BODY_NOT_UPDATED … reason=not-this-branch`, `no-pr-number`, `not-open` or `head-not-updated` | `ship` stopped. Report it; never edit another branch's or a closed PR. |\n| `STATUS: CI_FAILED` | Nothing is merged. Report the URL and `gh pr checks \u003Cn>`. |\n| `STATUS: CI_TIMEOUT`, `STATUS: CI_NOT_DONE` | Nothing is merged. Run `sdm.sh finish \u003Cn>` later. |\n| `STATUS: MERGE_FAILED` | Nothing is deleted. Report the state and URL. If the remote head moved, fetch, review what changed and start again at step 1; never force-push. A conflict or branch protection goes to the user. |\n| `STATUS: BRANCH_NOT_DELETED` | Merged, but the remote branch is still there. If it moved after the merge, it holds commits not on the default branch: report them; the user decides. If only the delete failed: from a linked worktree, run `sdm.sh finish \u003Cn>` again (a PR already MERGED at HEAD gets no merge call, no strategy or check-runs read, only the delete and cleanup); from a plain checkout the local branch is gone, so tell the user to delete the remote branch. |\n| `STATUS: MAIN_NOT_UPDATED`, `STATUS: MAIN_CHECKOUT_DIRTY` | Merged. The default branch was not updated: report the reason; the user updates it. |\n\nAny other line: read `sdm.sh help`.\n\n## After the merge\n\nFile the MEDIUM\u002FLOW findings (step 2) as one TODOS.md entry in the next commit on the\ndefault branch, or on the active plan's next branch (L-037).\n\n## Settings\n\nEnvironment variables, all optional, operator-set (defaults and validation: the top of\n`sdm.sh`):\n- `CI_POLL_TIMEOUT`: the CI watch cap.\n- `CI_APPEAR_TIMEOUT_S` and `CI_APPEAR_INTERVAL_S`: the wait for checks to appear.\n- `AA_MA_PLAN_DIR`: adds the plan context line.\n- `AA_MA_FOOTER_HELPER`: the footer helper for the auto-fix commit; else the repo's copy,\n  else `${CLAUDE_HOME:-~\u002F.claude}\u002Fhooks\u002Flib\u002Faa-ma-footer.sh`, else `[ad-hoc]`.\n\nHistory: the stage-block design this replaces is ADR-0008; why one script is ADR-0024.\n",{"name":5,"description":7,"disable-model-invocation":49},true,"main","cd9a2962c9a7e0797fe440f7b1ba4ceccc16ae0d","claude-code\u002Fskills\u002Fsole-dev-merge",1,"https:\u002F\u002Fgithub.com\u002Fsnewhouse\u002Faa-ma-forge","https:\u002F\u002Fgithub.com\u002Fsnewhouse","Data Scientist, Bioinformatician, Dad, Husband, MS warrior","2026-11-11 21:34:39",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":49},[60,63,66],{"tool":61,"command":62},"npx","npx skills add snewhouse\u002Faa-ma-forge --skill sole-dev-merge",{"tool":64,"command":65},"bunx","bunx skills add snewhouse\u002Faa-ma-forge --skill sole-dev-merge",{"tool":67,"command":68},"pnpm","pnpm dlx skills add snewhouse\u002Faa-ma-forge --skill sole-dev-merge","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsnewhouse\u002Faa-ma-forge\u002Fblob\u002Fmain\u002Fclaude-code\u002Fskills\u002Fsole-dev-merge\u002FSKILL.md",[71],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"scripts\u002Fsdm.sh","SCRIPT","脚本",25211,"https:\u002F\u002Fgithub.com\u002Fsnewhouse\u002Faa-ma-forge\u002Fblob\u002Fmain\u002Fclaude-code\u002Fskills\u002Fsole-dev-merge\u002Fscripts\u002Fsdm.sh",[78,103,128,149,172,201],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":89,"publishedAt":44},"01M6MZ588SD5DDH59H18PRNWEV","deploy-helper","You can use this to help with deploy stuff, deploying, deployments, releases, shipping, pushing to prod, going live, rollouts.","https:\u002F\u002Fgithub.com\u002Fsnewhouse\u002Faa-ma-forge\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fevals\u002Fskill-draft\u002Fdraft\u002FSKILL.md",[84],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[90,91,92,93,94,95,96,97,98,99,100,101,102],"deploy","deploy helper","helper","you","live","with","can","rollouts","shipping","use","deployments","releases","help",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":107,"licenseFileUrl":108,"sourceHtmlUrl":109,"categories":110,"keywords":120,"publishedAt":44},"01M6MZ54NEKRYXGMJ1KJWYMKM7","writing-for-agents","Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.","MIT","https:\u002F\u002Fgithub.com\u002Fsnewhouse\u002Faa-ma-forge\u002Fblob\u002Fmain\u002Fclaude-code\u002Fskills\u002Fwriting-for-agents\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fsnewhouse\u002Faa-ma-forge\u002Fblob\u002Fmain\u002Fclaude-code\u002Fskills\u002Fwriting-for-agents\u002FSKILL.md",[111,114,117],{"categoryNo":112,"categoryName":113,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":115,"categoryName":116,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":118,"categoryName":119,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000036","内容创作者",[121,122,29,123,99,124,125,126,127],"writing","writing for agents","line","instructions","read","editing","documents",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":44},"01M6MZ500T0FH1G8TBSQV7G5G2","verify-plan","Slash entry for plan verification: runs plan-verification on an existing AA-MA plan, writes [task]-verification.md, and with --iterate loops until the plan converges. Use when the user types \u002Fverify-plan or wants the verification report saved.","https:\u002F\u002Fgithub.com\u002Fsnewhouse\u002Faa-ma-forge\u002Fblob\u002Fmain\u002Fclaude-code\u002Fskills\u002Fverify-plan\u002FSKILL.md",[],[135,136,137,138,139,99,140,95,141,142,143,144,145,146,147,29,148],"verify","plan","verify plan","loops","task","user","verification","report","types","plan verification","entry","iterate","Existing","saved",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":155,"publishedAt":44},"01M6MZ4V9ST4K54NT1SRBGCE7P","verify-impl","Post-impl adversarial review symmetric to \u002Fverify-plan. Dispatches up to 5 parallel audit agents (code-reviewer, security-auditor, tdd-sequence-auditor, context7-evidence-auditor, future-proofing-auditor) based on the milestone's plan-declared Audit-Profile. CRITICAL findings surface via AskUserQuestion accept\u002Fdispute\u002Fdefer panel before §7.3 user authorization. Introduced in v0.8.0 per ADR-0005. Invoked by Phase 6.8 of \u002Fexecute-aa-ma-milestone.","https:\u002F\u002Fgithub.com\u002Fsnewhouse\u002Faa-ma-forge\u002Fblob\u002Fmain\u002Fclaude-code\u002Fskills\u002Fverify-impl\u002FSKILL.md",[],[156,157,135,158,159,160,161,162,36,163,164,165,166,167,168,136,169,40,170,171],"impl","verify impl","adversarial","post","panel","via","critical","context7","up","evidence","reviewer","parallel","adr","audit","tdd","milestone",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":182,"publishedAt":44},"01M6MZ4K7CC9PMJ1KEY3F53RS1","understand-codebase","Onboard to a new, inherited, or shared codebase. Read it, understand it, map it, and learn its conventions, versioning, tests, tech stack, rules (AGENTS.md \u002F CLAUDE.md \u002F .cursorrules \u002F etc.), build\u002Frun\u002FCI, integrations, security posture, and repo health — then produce an honest pros\u002Fcons verdict, a \"contribute safely\" playbook, and an \"add a feature\" playbook, written to ONBOARDING.md at the repo root plus a .claude\u002Fonboarding\u002F set of deep-dives — and optionally author an AGENTS.md if one is missing, or review and propose improvements to an existing one. Tiered (Quick \u002F Standard \u002F Deep). Reuses codemem (index + diagrams), gsd-map-codebase, system-mapping, code-intelligence, impact-analysis rather than re-implementing them; Deep tier runs a TeamCreate agent-team. Keywords: new codebase, shared codebase, inherited code, onboard, understand this repo, how do I contribute, how do I add a feature, ramp up, get oriented, ONBOARDING.md, AGENTS.md, codebase walkthrough, joining a project.","https:\u002F\u002Fgithub.com\u002Fsnewhouse\u002Faa-ma-forge\u002Fblob\u002Fmain\u002Fclaude-code\u002Fskills\u002Funderstand-codebase\u002FSKILL.md",[178,179],{"categoryNo":115,"categoryName":116,"taxonomyType":87,"taxonomyTypeDesc":88},{"categoryNo":180,"categoryName":181,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000038","人力资源",[183,184,185,164,186,187,188,38,189,190,191,192,193,194,195,196,197,198,199,200],"understand codebase","codebase","understand","walkthrough","analysis","SET","learn","diagrams","repo health","implementing","re","quick","impact","get","project","deep","shared","map",{"skillNo":202,"name":203,"nameZh":6,"description":204,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":205,"categories":206,"keywords":207,"publishedAt":44},"01M6MZ4D1ZC8MTW064QXY6WC76","token-compression","Output token compression for AA-MA workflows. Reduces response tokens by 40-75% while preserving full technical accuracy. Three intensity levels mapped to execution modes: lite (HITL), full (general), ultra (AFK). Auto-activates during AA-MA execution based on task Mode field. Manual activation via \u002Fcompress lite|full|ultra.","https:\u002F\u002Fgithub.com\u002Fsnewhouse\u002Faa-ma-forge\u002Fblob\u002Fmain\u002Fclaude-code\u002Fskills\u002Ftoken-compression\u002FSKILL.md",[],[208,209,210,211,212,213,214,29,215,216,161,217,218,219,220,139,221,222,223,224],"compression","token compression","token","workflows","output","modes","accuracy","mode","manual","intensity","tokens","hitl","three","general","auto","technical","execution"]