[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71RQKF7JB5PSRCJB8TZG72S":3,"skill-same:01M71RQKF7JB5PSRCJB8TZG72S":110},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":53,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":55,"install":56,"resources":69},"01M71RQKF7JB5PSRCJB8TZG72S","garrison-project-foundation",null,"Idempotently audit and scaffold a project's Claude-Code foundation - a lean root CLAUDE.md with a routing index, living \u002Fdocs (product-overview, architecture, conventions, governance, decisions), per-area skills under .claude\u002Fskills\u002F, and git init. Read-only DETECT pass produces a gap list; GENERATE creates only the missing\u002Fpartial pieces and NEVER rewrites an existing canonical file. This is the project-foundation step of a Garrison run, setting up a new or existing repo for agent-driven work. NOT for planning build slices - use the planning\u002FFLOW_PLAN step; NOT for implementing features. Invoked by the Garrison run engine as its project-foundation step, or standalone only when the user explicitly asks for it. Do NOT auto-invoke this skill from task inference - Garrison decides when its phase skills run.","gongiskhan\u002Fagent-garrison","gongiskhan","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1997392?v=4","01M71RKMFR53TKXE308C22QTNZ","01M71RKMJA57KZHNDCBNKTWZRR",1,"MIT","https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison\u002Fblob\u002Fmain\u002Ffittings\u002Fseed\u002Fgarrison-skills\u002F.apm\u002Fskills\u002Fgarrison-project-foundation\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"foundation","garrison project foundation","project","auto-invoke","phase","architecture","code","when","invoke","auto","new","only","init","implementing","up","existing repo","lean","skills run","never","standalone","2026-11-10 13:02:02",false,"---\nname: garrison-project-foundation\ndescription: Idempotently audit and scaffold a project's Claude-Code foundation - a lean root CLAUDE.md with a routing index, living \u002Fdocs (product-overview, architecture, conventions, governance, decisions), per-area skills under .claude\u002Fskills\u002F, and git init. Read-only DETECT pass produces a gap list; GENERATE creates only the missing\u002Fpartial pieces and NEVER rewrites an existing canonical file. This is the project-foundation step of a Garrison run, setting up a new or existing repo for agent-driven work. NOT for planning build slices - use the planning\u002FFLOW_PLAN step; NOT for implementing features. Invoked by the Garrison run engine as its project-foundation step, or standalone only when the user explicitly asks for it. Do NOT auto-invoke this skill from task inference - Garrison decides when its phase skills run.\n---\n\n# garrison-project-foundation\n\n## Policy-read preamble (soft - D5\u002FD12)\n\nAt the start of every invocation, look for the compiled Orchestrator policy at\n`~\u002F.garrison\u002Forchestrator\u002Fpolicy.json` (or `$GARRISON_POLICY_PATH`).\n\n- **Policy present** (a Garrison run): it is the single authority. This skill\n  carries NO model\u002Feffort pins - its execution parameters come from the policy\n  matrix cell for its phase (`matrix[\u003Cphase>][\u003Ctier>]`), and its gate duties\n  from the bindable phase-skill contract (the Orchestrator fitting's\n  PHASE_SKILL_CONTRACT.md): do the phase's work in the run context handed to you\n  (runDir, card, phase), write the phase's gate-status entry under the runDir,\n  and print the phase's `GATE \u003Cphase>: \u003Cverdict>` line before choosing the next\n  list.\n- **Policy absent** (standalone, any repo): proceed with the caller-supplied\n  context and sensible defaults - NEVER stop. Report to the caller rather than\n  writing gate-status\u002Frun artifacts, and skip any board\u002Frun-engine steps.\n\n\nSets up (or audits) the per-project foundation that lets agents work a repo coherently: a lean root `CLAUDE.md` that routes to area skills, a small set of living `\u002Fdocs`, the warranted area skills inside the project's `.claude\u002Fskills\u002F`, and a git repo. **USER-scope skill; everything it writes is PROJECT-scope** (inside the target repo).\n\n`garrison` invokes this as its Phase 0 (detect) + Phase 1 (generate) before building. Use it directly any time you want to bootstrap or audit a repo's foundation without launching a build.\n\n## Two steps\n\n### 1. Detect (read-only — never edits)\nRun the manifest detection in `references\u002Fmanifest.md`. Produce a **gap list** — `present | missing | partial` per manifest element — plus a role map for any existing docs and any refresh recommendations. Detection only reads; it proposes, it does not change files.\n\n### 2. Generate the gaps ONLY\nPer `references\u002Fgeneration.md`, create **only** what detection marked missing\u002Fpartial. Delegate; do not reinvent.\n- **Git first:** if the repo is not a git work tree, `git init` + an initial commit before anything else — flow-selection diffs (`walkthrough`), workflow `isolation: 'worktree'`, and rollback all depend on it.\n- New\u002Fempty repo: seed via `deep-research` (product brief) → `frontend-design`\u002F`huashu-design` (prototype + design tokens). Skip for an existing codebase.\n- Generate missing `\u002Fdocs` from `assets\u002Fdocs\u002F`, the lean `CLAUDE.md` from `assets\u002FCLAUDE.md.template` (routing index filled with the REAL generated skill names), and author the area skills into `\u003Cproject>\u002F.claude\u002Fskills\u002F\u003Cproj>-\u003Carea>\u002F` from the exemplar `assets\u002Farea-skills\u002Ftesting.SKILL.md`. Area skills are NOT optional when the project will be built by parallel teammates\u002Fworkers — they load these, not the lead's context.\n- **Git hygiene:** add the idempotent, marker-delimited garrison block to the target repo's `.gitignore` (concrete block + inventory in **Git hygiene** below) so evidence binaries and volatile run state stay untracked while the small cross-machine resume files stay versioned.\n- Scaffold `docs\u002Fautothing\u002Fknown-flakes.md` — empty, with a header — **if missing**. It is the per-project log where each diagnosed infra flake is appended with its fix, so later gates and resumes read it instead of re-diagnosing (the preflight and the resume protocol read it). Never overwrite an existing one.\n\n## The area-skill set\nAuthor into the **target project** (`\u003Cproj>-\u003Carea>`), each from the project's real commands\u002Fpaths — never a generic copy. Include the first five always; add the last two when the stack warrants. Full table + authoring rules in `references\u002Fgeneration.md`:\n\n`\u003Cproj>-planning` · `\u003Cproj>-architecture` · `\u003Cproj>-testing` · `\u003Cproj>-design-audit` · `\u003Cproj>-governance` — and `\u003Cproj>-mobile` \u002F `\u003Cproj>-data-api` when relevant.\n\n**Verbs in the skill, nouns in the doc.** Each SKILL.md references its backing doc by path and never duplicates it; each description states when to trigger AND an explicit \"do NOT use for … (that is `\u003Cother skill>`)\" clause to prevent collisions.\n\n## Git hygiene — the `.gitignore` managed block\nInventory everything the garrison family writes into the target repo first, then write an idempotent, marker-delimited block into its `.gitignore`. **Re-running updates the block in place between the markers — it never duplicates it:**\n\n```\n# >>> garrison >>>\n# Managed by garrison — evidence binaries and volatile run state. Edit only OUTSIDE the markers.\n**\u002Fruns\u002F**\u002F*.cast\n**\u002Fruns\u002F**\u002F*.webm\n**\u002Fruns\u002F**\u002F*.mp4\n**\u002Fruns\u002F**\u002F*.png\n**\u002Fruns\u002F**\u002Fscreenshots\u002F\n**\u002Fruns\u002F**\u002Fstatus.json\n**\u002Fowner.lock.json\n.walkthrough\u002F**\u002F*.mp4\n.walkthrough\u002F**\u002F*.png\n.claude\u002F**\u002Fcache\u002F\n.claude\u002F**\u002Fworkflows\u002F\n# \u003C\u003C\u003C garrison \u003C\u003C\u003C\n```\n\n- **Ignored:** the evidence binaries under any `runs\u002F` dir — `docs\u002Fautothing\u002Fruns\u002F` AND the walkthrough's `.walkthrough\u002Fruns\u002F` (the leading `**\u002F` matters: a root-anchored `runs\u002F...` would match neither, since evidence never lives at repo-root `runs\u002F`) — (`*.cast`, `*.webm`, `*.mp4`, `*.png`, screenshot dirs), the run's `status.json`, the owner locks (`owner.lock.json`), and whatever workflow\u002Fcache dirs the inventory finds under `.claude\u002F`.\n- **Kept versioned — NEVER ignored:** `FLOW_PLAN.md`, `evidence-index.json`, `gate-status.json`, `RUN_LOG.md`, `RUN_SPEC.md`, `LANDING.md`. Cross-machine resume depends on exactly these small files — so **never exclude the whole `runs\u002F` dir**, only the binaries and volatile state inside it.\n\n## Preflight — run-start environment (also on resume)\nBefore any slice, at run start **and on every resume**, run a preflight doctor:\n- **Tool inventory + versions.** Check the binaries the run will need — `asciinema`, `agg`, `codex`, `gitleaks`, `semgrep`, `playwright`\u002F`playwright-cli`, `ffmpeg`, and the project's own test-runner binaries — and record each version into the RUN_LOG `RUN-START` entry. A missing tool is installed with the ecosystem's standard command (self-unblock) or, when that is not possible, logged as a `DECISION` before any slice starts. Environment failures surface at minute zero, not mid-gate.\n- **Read `docs\u002Fautothing\u002Fknown-flakes.md`** so the diagnosed infra flakes (and their fixes) are loaded up front and no gate or resume re-diagnoses them.\n\n## Security wall install\nInstall the **universal deterministic security wall** so it runs before any model gate, for every project, at zero tokens inside the per-slice deterministic wall:\n- `gitleaks` (secret scanning), `semgrep` (SAST), and a dependency-audit severity check — each self-installed with the ecosystem's standard command.\n- Project-specific Semgrep rules are the extension point, fed by the determinism ratchet: an accepted security finding becomes a committed rule, so the wall catches it deterministically next time.\n\n## Non-negotiables — idempotent + non-clobbering\n- **Missing element → create it** from the template\u002Fexemplar.\n- **Existing canonical file → NEVER rewrite or refactor it.** Not CLAUDE.md, not any \u002Fdoc the user already wrote. The only permitted edits to existing files are **additive and clearly-owned**: append a `## Routing index` to CLAUDE.md *if absent*, append to `docs\u002Fdecisions.md`, or add a **new** area-skill \u002F nested CLAUDE.md (creating files ≠ editing existing ones).\n- **Staleness is REPORTED, never acted on.** Long CLAUDE.md, stale doc, overlapping skill descriptions → write to `docs\u002FREFRESH-RECOMMENDATIONS.md` and continue. Slimming\u002Freorganising an existing file is a recommendation, not an action — never do it unattended.\n- For an existing repo, a role already covered by a differently-named file gets a **pointer** in CLAUDE.md's reference list, not a duplicate.\n\n## Files\n- `references\u002Fmanifest.md` — the 6-element manifest, the \u002Fdocs role map, idempotency rules, staleness reporting, and what the gap list contains.\n- `references\u002Fgeneration.md` — generating \u002Fdocs + the lean CLAUDE.md, new-project bootstrap, and authoring the area-skill set (with the full table).\n- `assets\u002FCLAUDE.md.template` — the lean root CLAUDE.md skeleton (summary, critical rules, design source of truth, definition of done, canonical @imports, routing index, path-scoped guidance).\n- `assets\u002Fdocs\u002F` — skeletons for product-overview, architecture, conventions, governance, decisions.\n- `assets\u002Farea-skills\u002Ftesting.SKILL.md` — the worked area-skill exemplar to adapt (vision-first explore → write+run tests → report exit codes).\n","# garrison-project-foundation\n\n## Policy-read preamble (soft - D5\u002FD12)\n\nAt the start of every invocation, look for the compiled Orchestrator policy at\n`~\u002F.garrison\u002Forchestrator\u002Fpolicy.json` (or `$GARRISON_POLICY_PATH`).\n\n- **Policy present** (a Garrison run): it is the single authority. This skill\n  carries NO model\u002Feffort pins - its execution parameters come from the policy\n  matrix cell for its phase (`matrix[\u003Cphase>][\u003Ctier>]`), and its gate duties\n  from the bindable phase-skill contract (the Orchestrator fitting's\n  PHASE_SKILL_CONTRACT.md): do the phase's work in the run context handed to you\n  (runDir, card, phase), write the phase's gate-status entry under the runDir,\n  and print the phase's `GATE \u003Cphase>: \u003Cverdict>` line before choosing the next\n  list.\n- **Policy absent** (standalone, any repo): proceed with the caller-supplied\n  context and sensible defaults - NEVER stop. Report to the caller rather than\n  writing gate-status\u002Frun artifacts, and skip any board\u002Frun-engine steps.\n\n\nSets up (or audits) the per-project foundation that lets agents work a repo coherently: a lean root `CLAUDE.md` that routes to area skills, a small set of living `\u002Fdocs`, the warranted area skills inside the project's `.claude\u002Fskills\u002F`, and a git repo. **USER-scope skill; everything it writes is PROJECT-scope** (inside the target repo).\n\n`garrison` invokes this as its Phase 0 (detect) + Phase 1 (generate) before building. Use it directly any time you want to bootstrap or audit a repo's foundation without launching a build.\n\n## Two steps\n\n### 1. Detect (read-only — never edits)\nRun the manifest detection in `references\u002Fmanifest.md`. Produce a **gap list** — `present | missing | partial` per manifest element — plus a role map for any existing docs and any refresh recommendations. Detection only reads; it proposes, it does not change files.\n\n### 2. Generate the gaps ONLY\nPer `references\u002Fgeneration.md`, create **only** what detection marked missing\u002Fpartial. Delegate; do not reinvent.\n- **Git first:** if the repo is not a git work tree, `git init` + an initial commit before anything else — flow-selection diffs (`walkthrough`), workflow `isolation: 'worktree'`, and rollback all depend on it.\n- New\u002Fempty repo: seed via `deep-research` (product brief) → `frontend-design`\u002F`huashu-design` (prototype + design tokens). Skip for an existing codebase.\n- Generate missing `\u002Fdocs` from `assets\u002Fdocs\u002F`, the lean `CLAUDE.md` from `assets\u002FCLAUDE.md.template` (routing index filled with the REAL generated skill names), and author the area skills into `\u003Cproject>\u002F.claude\u002Fskills\u002F\u003Cproj>-\u003Carea>\u002F` from the exemplar `assets\u002Farea-skills\u002Ftesting.SKILL.md`. Area skills are NOT optional when the project will be built by parallel teammates\u002Fworkers — they load these, not the lead's context.\n- **Git hygiene:** add the idempotent, marker-delimited garrison block to the target repo's `.gitignore` (concrete block + inventory in **Git hygiene** below) so evidence binaries and volatile run state stay untracked while the small cross-machine resume files stay versioned.\n- Scaffold `docs\u002Fautothing\u002Fknown-flakes.md` — empty, with a header — **if missing**. It is the per-project log where each diagnosed infra flake is appended with its fix, so later gates and resumes read it instead of re-diagnosing (the preflight and the resume protocol read it). Never overwrite an existing one.\n\n## The area-skill set\nAuthor into the **target project** (`\u003Cproj>-\u003Carea>`), each from the project's real commands\u002Fpaths — never a generic copy. Include the first five always; add the last two when the stack warrants. Full table + authoring rules in `references\u002Fgeneration.md`:\n\n`\u003Cproj>-planning` · `\u003Cproj>-architecture` · `\u003Cproj>-testing` · `\u003Cproj>-design-audit` · `\u003Cproj>-governance` — and `\u003Cproj>-mobile` \u002F `\u003Cproj>-data-api` when relevant.\n\n**Verbs in the skill, nouns in the doc.** Each SKILL.md references its backing doc by path and never duplicates it; each description states when to trigger AND an explicit \"do NOT use for … (that is `\u003Cother skill>`)\" clause to prevent collisions.\n\n## Git hygiene — the `.gitignore` managed block\nInventory everything the garrison family writes into the target repo first, then write an idempotent, marker-delimited block into its `.gitignore`. **Re-running updates the block in place between the markers — it never duplicates it:**\n\n```\n# >>> garrison >>>\n# Managed by garrison — evidence binaries and volatile run state. Edit only OUTSIDE the markers.\n**\u002Fruns\u002F**\u002F*.cast\n**\u002Fruns\u002F**\u002F*.webm\n**\u002Fruns\u002F**\u002F*.mp4\n**\u002Fruns\u002F**\u002F*.png\n**\u002Fruns\u002F**\u002Fscreenshots\u002F\n**\u002Fruns\u002F**\u002Fstatus.json\n**\u002Fowner.lock.json\n.walkthrough\u002F**\u002F*.mp4\n.walkthrough\u002F**\u002F*.png\n.claude\u002F**\u002Fcache\u002F\n.claude\u002F**\u002Fworkflows\u002F\n# \u003C\u003C\u003C garrison \u003C\u003C\u003C\n```\n\n- **Ignored:** the evidence binaries under any `runs\u002F` dir — `docs\u002Fautothing\u002Fruns\u002F` AND the walkthrough's `.walkthrough\u002Fruns\u002F` (the leading `**\u002F` matters: a root-anchored `runs\u002F...` would match neither, since evidence never lives at repo-root `runs\u002F`) — (`*.cast`, `*.webm`, `*.mp4`, `*.png`, screenshot dirs), the run's `status.json`, the owner locks (`owner.lock.json`), and whatever workflow\u002Fcache dirs the inventory finds under `.claude\u002F`.\n- **Kept versioned — NEVER ignored:** `FLOW_PLAN.md`, `evidence-index.json`, `gate-status.json`, `RUN_LOG.md`, `RUN_SPEC.md`, `LANDING.md`. Cross-machine resume depends on exactly these small files — so **never exclude the whole `runs\u002F` dir**, only the binaries and volatile state inside it.\n\n## Preflight — run-start environment (also on resume)\nBefore any slice, at run start **and on every resume**, run a preflight doctor:\n- **Tool inventory + versions.** Check the binaries the run will need — `asciinema`, `agg`, `codex`, `gitleaks`, `semgrep`, `playwright`\u002F`playwright-cli`, `ffmpeg`, and the project's own test-runner binaries — and record each version into the RUN_LOG `RUN-START` entry. A missing tool is installed with the ecosystem's standard command (self-unblock) or, when that is not possible, logged as a `DECISION` before any slice starts. Environment failures surface at minute zero, not mid-gate.\n- **Read `docs\u002Fautothing\u002Fknown-flakes.md`** so the diagnosed infra flakes (and their fixes) are loaded up front and no gate or resume re-diagnoses them.\n\n## Security wall install\nInstall the **universal deterministic security wall** so it runs before any model gate, for every project, at zero tokens inside the per-slice deterministic wall:\n- `gitleaks` (secret scanning), `semgrep` (SAST), and a dependency-audit severity check — each self-installed with the ecosystem's standard command.\n- Project-specific Semgrep rules are the extension point, fed by the determinism ratchet: an accepted security finding becomes a committed rule, so the wall catches it deterministically next time.\n\n## Non-negotiables — idempotent + non-clobbering\n- **Missing element → create it** from the template\u002Fexemplar.\n- **Existing canonical file → NEVER rewrite or refactor it.** Not CLAUDE.md, not any \u002Fdoc the user already wrote. The only permitted edits to existing files are **additive and clearly-owned**: append a `## Routing index` to CLAUDE.md *if absent*, append to `docs\u002Fdecisions.md`, or add a **new** area-skill \u002F nested CLAUDE.md (creating files ≠ editing existing ones).\n- **Staleness is REPORTED, never acted on.** Long CLAUDE.md, stale doc, overlapping skill descriptions → write to `docs\u002FREFRESH-RECOMMENDATIONS.md` and continue. Slimming\u002Freorganising an existing file is a recommendation, not an action — never do it unattended.\n- For an existing repo, a role already covered by a differently-named file gets a **pointer** in CLAUDE.md's reference list, not a duplicate.\n\n## Files\n- `references\u002Fmanifest.md` — the 6-element manifest, the \u002Fdocs role map, idempotency rules, staleness reporting, and what the gap list contains.\n- `references\u002Fgeneration.md` — generating \u002Fdocs + the lean CLAUDE.md, new-project bootstrap, and authoring the area-skill set (with the full table).\n- `assets\u002FCLAUDE.md.template` — the lean root CLAUDE.md skeleton (summary, critical rules, design source of truth, definition of done, canonical @imports, routing index, path-scoped guidance).\n- `assets\u002Fdocs\u002F` — skeletons for product-overview, architecture, conventions, governance, decisions.\n- `assets\u002Farea-skills\u002Ftesting.SKILL.md` — the worked area-skill exemplar to adapt (vision-first explore → write+run tests → report exit codes).\n",{"name":5,"description":7},"main","31458d7e0e08a7b3494c27bf2b912ed41c87a138","fittings\u002Fseed\u002Fgarrison-skills\u002F.apm\u002Fskills\u002Fgarrison-project-foundation",0,"https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison","https:\u002F\u002Fgongiskhan.github.io\u002Fagent-garrison\u002F","https:\u002F\u002Fgithub.com\u002Fgongiskhan","2026-11-07 05:27:23",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add gongiskhan\u002Fagent-garrison --skill garrison-project-foundation",{"tool":62,"command":63},"bunx","bunx skills add gongiskhan\u002Fagent-garrison --skill garrison-project-foundation",{"tool":65,"command":66},"pnpm","pnpm dlx skills add gongiskhan\u002Fagent-garrison --skill garrison-project-foundation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison\u002Fblob\u002Fmain\u002Ffittings\u002Fseed\u002Fgarrison-skills\u002F.apm\u002Fskills\u002Fgarrison-project-foundation\u002FSKILL.md",true,[70,76,80,84,88,92,96,100,106],{"path":71,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":75},"assets\u002Farea-skills\u002Ftesting.SKILL.md","ASSET","资产文件",4759,"https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison\u002Fblob\u002Fmain\u002Ffittings\u002Fseed\u002Fgarrison-skills\u002F.apm\u002Fskills\u002Fgarrison-project-foundation\u002Fassets\u002Farea-skills\u002Ftesting.SKILL.md",{"path":77,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":78,"sourceHtmlUrl":79},"assets\u002FCLAUDE.md.template",2415,"https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison\u002Fblob\u002Fmain\u002Ffittings\u002Fseed\u002Fgarrison-skills\u002F.apm\u002Fskills\u002Fgarrison-project-foundation\u002Fassets\u002FCLAUDE.md.template",{"path":81,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":82,"sourceHtmlUrl":83},"assets\u002Fdocs\u002Farchitecture.md",1487,"https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison\u002Fblob\u002Fmain\u002Ffittings\u002Fseed\u002Fgarrison-skills\u002F.apm\u002Fskills\u002Fgarrison-project-foundation\u002Fassets\u002Fdocs\u002Farchitecture.md",{"path":85,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":86,"sourceHtmlUrl":87},"assets\u002Fdocs\u002Fconventions.md",782,"https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison\u002Fblob\u002Fmain\u002Ffittings\u002Fseed\u002Fgarrison-skills\u002F.apm\u002Fskills\u002Fgarrison-project-foundation\u002Fassets\u002Fdocs\u002Fconventions.md",{"path":89,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":90,"sourceHtmlUrl":91},"assets\u002Fdocs\u002Fdecisions.md",1196,"https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison\u002Fblob\u002Fmain\u002Ffittings\u002Fseed\u002Fgarrison-skills\u002F.apm\u002Fskills\u002Fgarrison-project-foundation\u002Fassets\u002Fdocs\u002Fdecisions.md",{"path":93,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":94,"sourceHtmlUrl":95},"assets\u002Fdocs\u002Fgovernance.md",1714,"https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison\u002Fblob\u002Fmain\u002Ffittings\u002Fseed\u002Fgarrison-skills\u002F.apm\u002Fskills\u002Fgarrison-project-foundation\u002Fassets\u002Fdocs\u002Fgovernance.md",{"path":97,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":98,"sourceHtmlUrl":99},"assets\u002Fdocs\u002Fproduct-overview.md",1034,"https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison\u002Fblob\u002Fmain\u002Ffittings\u002Fseed\u002Fgarrison-skills\u002F.apm\u002Fskills\u002Fgarrison-project-foundation\u002Fassets\u002Fdocs\u002Fproduct-overview.md",{"path":101,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":104,"sourceHtmlUrl":105},"references\u002Fgeneration.md","REFERENCE","参考文档",4548,"https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison\u002Fblob\u002Fmain\u002Ffittings\u002Fseed\u002Fgarrison-skills\u002F.apm\u002Fskills\u002Fgarrison-project-foundation\u002Freferences\u002Fgeneration.md",{"path":107,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":108,"sourceHtmlUrl":109},"references\u002Fmanifest.md",3668,"https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison\u002Fblob\u002Fmain\u002Ffittings\u002Fseed\u002Fgarrison-skills\u002F.apm\u002Fskills\u002Fgarrison-project-foundation\u002Freferences\u002Fmanifest.md",[111,123,133,144,156,183],{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":117,"publishedAt":43},"01M71RTFA0HD83YBE1TE7DCE6B","pinned-helper","An owned skill the human has pinned so the Improver must not touch it.","https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fimprover\u002Fskills\u002Fpinned-helper\u002FSKILL.md",[],[118,119,120,121,122],"pinned helper","helper","human","touch","it",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":43},"01M71RTDKBG0WQHPHKFZKFWDHF","legacy-helper","A rarely used helper kept around from an earlier workflow.","https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fimprover\u002Fskills\u002Flegacy-helper\u002FSKILL.md",[],[130,119,131,132],"Legacy","legacy helper","workflow",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":139,"publishedAt":43},"01M71RTCC6ZVVJ9MHHESXPHWA6","human-notes","A human-authored skill not deployed by APM (loose, not in the lock).","https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fimprover\u002Fskills\u002Fhuman-notes\u002FSKILL.md",[],[140,120,141,142,143],"notes","human notes","lock","apm",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":150,"publishedAt":43},"01M71RTB83ZP6VK6XH19Z93FAC","garrison-helper","Helps compose and station Garrison Fittings into Faculty role slots.","https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fimprover\u002Fskills\u002Fgarrison-helper\u002FSKILL.md",[],[119,151,152,153,154,155],"garrison","garrison helper","slots","role","compose",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":165,"publishedAt":43},"01M71RT6MBGJC4QQZBGHF4H1M8","walkthrough","Record a short, narrated, captioned video walkthrough that proves a finished coding task and shows how it behaves, then self-verify the video via vision on extracted frames and publish it as one scrubbable Tailscale link. Use after completing a change\u002Ffix\u002Ffeature on a web project (Next.js\u002FReact etc.) when the user wants visual proof of work, a demo of a user flow, or to avoid manually retesting and watching a long raw screen recording. Triggers on requests like \"record a walkthrough\", \"show me it working\", \"make a demo video of this\", \"prove the feature\", or finishing a UI\u002Froute\u002Fform\u002FAPI change worth demonstrating. Not for walking through a full from-scratch project build.","https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison\u002Fblob\u002Fmain\u002Ffittings\u002Fseed\u002Fwalkthrough\u002F.apm\u002Fskills\u002Fwalkthrough\u002FSKILL.md",[162],{"categoryNo":163,"categoryName":164,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",[158,30,25,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182],"project build","api","react","change","demo video","publish","recording","Video","show me","work","short","fix","show","route","me","next","self",{"skillNo":184,"name":185,"nameZh":6,"description":186,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":187,"categories":188,"keywords":189,"publishedAt":43},"01M71RT54T0SQS42XEP5FVQ28K","Trello","Manage tasks via Trello REST API.","https:\u002F\u002Fgithub.com\u002Fgongiskhan\u002Fagent-garrison\u002Fblob\u002Fmain\u002Ffittings\u002Fseed\u002Ftrello\u002F.apm\u002Fskills\u002Ftrello\u002FSKILL.md",[],[190,191,192,167,193,194,195],"trello","tasks","REST","manage","rest api","via"]