[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71RF6RR8HVV7E1BZYHMPC1D":3,"skill-same:01M71RF6RR8HVV7E1BZYHMPC1D":90},{"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":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M71RF6RR8HVV7E1BZYHMPC1D","autospec-grow-run",null,"Drain the growth backlog — implement growth:artifact issues via \u002Fautospec-run with a content-quality gate, run the growth:outbound draft→ethics→approval-queue pipeline (package-only, never auto-post), and measure\u002Fattribute via live adapters that re-weight the next define cycle. Use after \u002Fautospec-grow-define has filed issues.","berlinguyinca\u002Fautospec","berlinguyinca","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F16364?v=4","01M71R7C0SWBG05FNHQE4XQ7Y3","Gert Wohlgemuth","01M71R7C1VY5K3Q715RNDDBVGQ",3,"MIT","https:\u002F\u002Fgithub.com\u002Fberlinguyinca\u002Fautospec\u002Fblob\u002Fmain\u002Fskills\u002Fautospec-grow-run\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"grow","autospec","autospec grow run","run","define","package","backlog","quality gate","ethics","live","next","artifact","outbound","auto","only","issues","cycle","re","pipeline","never","2026-11-10 13:02:02",false,"---\nname: autospec-grow-run\ndescription: Drain the growth backlog — implement growth:artifact issues via \u002Fautospec-run with a content-quality gate, run the growth:outbound draft→ethics→approval-queue pipeline (package-only, never auto-post), and measure\u002Fattribute via live adapters that re-weight the next define cycle. Use after \u002Fautospec-grow-define has filed issues.\n---\n\n# autospec-grow-run workflow (harness-neutral)\n\nRun the implementation half of the autospec-growth pipeline for a\nproduct\u002Fsite opted into `.autospec\u002Fgrowth.yml`: **drain\n`growth:artifact` issues → draft\u002Fgate\u002Fqueue `growth:outbound` issues →\nhandle human approvals → measure and attribute.** This skill picks up\nwhere `\u002Fautospec-grow-define` stops.\n\nManage your own context — never exceed 60%. Delegate to subagents whenever\nyour harness supports it; do not draft outbound copy or run the ethics gate\ndirectly in the main conversation when a subagent can do it.\n\n\u003C!-- autospec-block:startup-self-update SKILL_NAME=autospec-grow-run -->\n\n## Self-update mode\n\nIf the invocation argument matches the regex `^\\s*update\\s*$` (case-insensitive,\nwhitespace-padded), this skill enters self-update mode and does not run the\nnormal pipeline:\n\n1. **Detect harness** by checking which install path exists for this skill:\n   - Claude Code: `~\u002F.claude\u002Fskills\u002Fautospec-grow-run\u002FSKILL.md`\n   - OpenCode:    `~\u002F.config\u002Fopencode\u002Fagent\u002Fautospec-grow-run.md`\n   - Codex CLI:   `~\u002F.codex\u002Fprompts\u002Fautospec-grow-run.md`\n2. **Re-install the full autospec suite from `main`** by piping the canonical\n   installer:\n   ```bash\n   curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fberlinguyinca\u002Fautospec\u002Fmain\u002Fbootstrap.sh | bash -s -- --skill all --harness all --update\n   ```\n   Run this one-liner once; it refreshes all autospec skills across all\n   harnesses. When you author this skill's own `SKILL.md` by hand, mirror the\n   change into the trio by editing `skills\u002Fautospec-grow-run\u002FSKILL.md` and\n   then re-deriving `codex\u002Fprompt.md` and `opencode\u002Fagent.md` with the repo's\n   trio-derivation helper (`derive-trio.sh`, run `--in-place`), then\n   regenerating the skill goldens with the repo's golden-generation helper\n   (`gen-skill-goldens.sh`) for `autospec-grow-run` — never hand-edit the\n   derived copies.\n3. **Show the diff** between the prior installed file(s) and the freshly\n   fetched copy (e.g. `diff \u003C(cat \u003Cprior>) \u003C(curl -fsSL ...SKILL.md)` or the\n   equivalent recorded by the installer).\n4. **Stop.** Do not enter Phase R0 \u002F any pipeline phase. Print the upgrade\n   summary and return to the user.\n\nIf no install path is detected, print `Self-update: no installed copy of\nautospec-grow-run found; run install.sh first.` and exit.\n\n## Run modes\n\nThe invocation argument (after the `update` check above) selects which phases\nrun. Match the argument case-insensitively, ignoring surrounding whitespace:\n\n- **`outbound`** (argument matches `^\\s*outbound\\s*$`) — **outbound-only\n  mode**: run R0 (detect) then R2 (draft → gate → queue) and R3 (handle\n  approvals). **Skip R1 and R4.** The artifact drain (R1) is the autonomous\n  conductor's Tier 1 job, and measurement (R4) is its own cadence-gated tier;\n  re-running either here would duplicate that work.\n- **`measure`** (argument matches `^\\s*measure\\s*$`) — **measure-only\n  mode**: run R0 (detect) then R4 (measure & attribute). **Skip R1, R2, and\n  R3.** This is what the conductor's cadence-gated measure tier invokes.\n- **anything else \u002F no argument** — **full pipeline**: R0 → R1 → R2 → R3 → R4,\n  exactly as described below.\n\nResolve the mode once in R0 and hold it for the run. Each phase below names\nthe modes it runs in; when a phase is skipped for the active mode, do not\nemit its ledger lines or notifications — proceed to the next phase it applies\nto. The conductor's outbound and measure tiers rely on these narrow modes so\neach tier does exactly its own slice of work.\n\n## Required capabilities & harness adapter\n\nThis workflow assumes seven capabilities. Map each one to your harness's\nactual tool. If a capability is missing, use the listed fallback.\n\n| Capability                  | Claude Code                          | OpenCode                                 | Codex CLI                                | Fallback if missing                                |\n|-----------------------------|---------------------------------------|-------------------------------------------|---------------------------------------------|-----------------------------------------------------|\n| Subagent dispatch (draft\u002Freview\u002Fattribute) | `Agent` (subagent_type=general-purpose) | nested `task` agent, await output | spawn nested CLI session | Do the work in-thread (more context cost) |\n| GitHub issue\u002Flabel\u002Fcomment ops | `gh` CLI via Bash | `gh` CLI via shell tool | `gh` CLI via `apply_patch`\u002Fshell | Abort the affected step and log a reason; never fake a `gh` result |\n| JSON\u002FJSONL manipulation | `jq` via Bash | `jq` via shell tool | `jq` via shell | Do the parsing inline in the subagent prompt |\n| HTTP calls for measurement adapters | `curl` via Bash | `curl` via shell tool | `curl` via shell | Degrade that adapter to `{}` and continue |\n| Human-visible run notifications | `PushNotification` | inline message \u002F OS notify equivalent | inline message | Print the notice to the transcript and continue |\n| Browser (site\u002FUI verification, best-effort) | `autospec-playwright` \u002F Claude-in-Chrome if available | equivalent browser tool if available | not typically available | Skip browser verification; note it as unverified |\n| Subagent model tier         | Tier A: `opus` + `ultrathink`; Tier B: `sonnet` + medium thinking | Tier A: top `task` model + high reasoning; Tier B: smaller-tier `task` + medium reasoning | Tier A: top GPT + `reasoning_effort=high`; Tier B: current spark\u002Fcost-optimized Codex + `reasoning_effort=medium` | Honor the per-phase tier mapping in AGENTS.md; retry the same subagent UP on unavailability |\n\u003C!-- autospec-block:harness-adapter-core -->\n\n**Persistent project notes**: write durable preferences to **`AGENTS.md`** in\nthe repo root — recognized by Claude Code, OpenCode, and Codex. Per\nAGENTS.md, subagent dispatches use a **two-tier policy**: Tier A (top model +\nextended thinking) for drafting, gate-review, and attribution work; Tier B\n(cheaper model + medium thinking) for mechanical steps. The orchestrator\nkeeps the user's invoked model. Fall back UP the tier on quota\u002Fcapacity or\nother unavailability by retrying the same subagent with the stronger tier\nwhile preserving parent context.\n\n## Harness detection + Model tier\n\nDetect your harness by checking available tools before Phase R0:\n\n1. **Claude Code** — the `Agent` tool with a `subagent_type` parameter is\n   available.\n   - `TIER_A` = `opus` + `ultrathink`  (the alias, which resolves to the current Claude Opus generation)\n   - `TIER_B` = `sonnet`               (the alias, which resolves to the current Claude Sonnet generation)\n\n2. **OpenCode** — a `task` tool with model\u002Ftier configuration is available\n   (no `subagent_type`).\n   - `TIER_A` = top-tier task model + high reasoning\n   - `TIER_B` = smaller-tier task model + medium reasoning\n\n3. **Codex CLI** — neither `Agent` nor a configurable `task` tool is\n   available; `apply_patch` is the primary edit tool.\n   - `TIER_A` = current top GPT model + `reasoning_effort=high`\n   - `TIER_B` = the spark \u002F cost-optimized variant of the configured model when one exists, else the configured model + `reasoning_effort=medium`\n\n**Fallback rule:** If `TIER_B` is not available in your harness (model\nunknown, quota\u002Fcapacity failure, authorization failure, or tool call returns\nan error for that model), silently retry the same subagent dispatch with\n`TIER_A`. Preserve the parent context on retry; for Codex native subagents,\nfork\u002Finherit the current conversation context and use the latest top GPT\nmodel instead of moving the work into the main session. Never ask the user.\n\nHold `TIER_A` and `TIER_B` for the entire skill run. Resolve both once, at\nskill start, before Phase R0.\n\n> **Model tier:** `TIER_A` (draft, gate-review, attribute); `TIER_B` (cheap mechanical).\n\n| Phase | Model tier | Why |\n|---|---|---|\n| R2 outbound draft | `TIER_A` | Drafting on-topic, non-spammy outreach copy that respects each venue's self-promo rule requires judgment. |\n| R2\u002FR3 ethics gate reviewer | `TIER_A` | Must actively look for disclosure gaps, spam framing, and policy violations — cheap models default to agreeing. |\n| R4 attribution synthesis \u002F learnings memo | `TIER_A` | Turning raw ledger + metric deltas into a defensible per-lens attribution narrative is judgment-heavy. |\n| Config read\u002Fvalidate, JSONL plumbing, `growth-*.sh`\u002F`grow-define-*.sh` invocations, ledger writes | `TIER_B` (or no subagent at all — deterministic scripts) | Mechanical: parsing, validating, and shelling out to deterministic scripts. |\n\n## Relevant memory injection\n\nBefore executing the main pipeline phases, call the injector to surface\nrelevant saved lessons:\n\n```bash\nbash \"${AUTOSPEC_SCRIPTS_DIR:-$HOME\u002F.autospec\u002Fscripts}\u002Finject-relevant-memory.sh\" \\\n  --context \"autospec-grow-run drain content-quality outbound ethics approval attribution\" \\\n  --top-k 5\n```\n\nPrepend the output block (if non-empty) to your working context. This\nsurfaces lessons like the growth-ethics blocklist immutability rule, the\n\"never auto-post\" invariant, and prior adapter fail-closed pitfalls before\nthey recur.\n\n## R0 — Detect\n\n*(runs in every mode)*\n\n0. Resolve the **run mode** from the invocation argument (see **Run modes**\n   above): `outbound`, `measure`, or full pipeline. Hold it for the run — it\n   decides which of R1–R4 execute.\n1. Detect your harness (see above) and resolve `TIER_A`\u002F`TIER_B`.\n2. Check for `.autospec\u002Fgrowth.yml`. If absent, print:\n   `\"No .autospec\u002Fgrowth.yml found — this repo is not opted into autospec-growth. See skills\u002Fautospec-grow-define\u002FREADME.md to configure a product\u002Fsite and try again.\"`\n   and **exit** (inert; do not create the file, do not proceed to any phase).\n3. Render the YAML as JSON (e.g. `yq -o=json . .autospec\u002Fgrowth.yml`) and\n   validate it:\n   ```bash\n   bash \"${AUTOSPEC_SCRIPTS_DIR:-$HOME\u002F.autospec\u002Fscripts}\u002Fvalidate-growth-config.sh\" \u003Cconfig.json>\n   ```\n   If validation fails (non-zero exit), print the validator's stderr reason\n   and **exit** — do not proceed with a partially-valid config.\n4. Resolve the growth-shared script directory once for the rest of the run:\n   `AUTOSPEC_SCRIPTS_DIR=\"${AUTOSPEC_SCRIPTS_DIR:-$HOME\u002F.autospec\u002Fscripts}\"`\n   (this is where every `growth-*.sh`, `grow-define-*.sh`, and\n   `validate-*.sh` script referenced below lives). Hold the validated\n   `\u003Cconfig.json>` path for the rest of the run.\n\n## R1 — Artifact drain\n\n*(full pipeline only — skipped in `outbound` and `measure` modes)*\n\n1. Enumerate open `growth:artifact` issues in the target repo:\n   ```bash\n   gh issue list --repo \u003Cowner\u002Fname> --label growth:artifact --state open --json number,title,labels\n   ```\n2. For each issue, in turn:\n   - Invoke `\u002Fautospec-run` against that single issue (invoked as the\n     existing skill, not forked\u002Freimplemented — this skill does not\n     duplicate `\u002Fautospec-run`'s own decompose\u002Fimplement\u002Fmerge machinery).\n     Because the issue carries `growth:artifact`, `\u002Fautospec-run` itself\n     runs the content-quality gate (`GATE=growth`: deterministic\n     `growth-content-quality-precheck.sh` pre-checks plus a `TIER_A`\n     reviewer, with adaptive retry on failure) before allowing that\n     issue's PR to auto-merge, alongside the standard code reviewer, the\n     `growth-ethics` gate, and `autospec-secaudit`. R1 does not re-run any\n     of these — the gate is single-sourced in `\u002Fautospec-run`.\n   - Append a ledger line: `merged_clean` on success, `failed` on a\n     per-issue failure. A per-issue failure does **not** stop the drain —\n     move on to the next `growth:artifact` issue.\n\n## R2 — Outbound draft → gate → queue\n\n*(full pipeline and `outbound` mode — skipped in `measure` mode)*\n\nFor each open `growth:outbound` (or `growth\u002Fneeds-draft`) issue, in turn:\n\n1. **Draft** (`TIER_A` subagent) — produce outbound copy matching\n   `skills\u002Fautospec-shared\u002Fschemas\u002Fgrowth-outbound-draft.schema.json`.\n2. **Structural validation**:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fvalidate-outbound-draft.sh\" \u003Cdraft.json>\n   ```\n   A malformed draft is **skipped and logged** — do not attempt to repair it\n   in-place; log the reason and move to the next issue.\n3. **Ethics gate** — deterministic disclosure pre-check, then the LLM gate:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-ethics-precheck.sh\" --disclosure \u003Cdraft.md>\n   ```\n   followed by a `TIER_A` `growth-ethics` reviewer subagent, both wrapped in\n   a **5-attempt adaptive-retry loop** (findings fed back as re-draft\n   directives). If the gate is still blocked after 5 attempts, append a\n   `rejected` ledger line, **retire the source issue** (remove its\n   `growth\u002Fneeds-draft` label, add `growth\u002Frejected`), and move on — do not\n   queue a blocked draft. Retiring it stops the conductor's outbound tier from\n   re-drafting the same hopeless issue every cycle.\n4. **Cadence check**:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-ethics-precheck.sh\" --cadence \u003Cconfig.json> \u003Cledger.jsonl> \u003Cplatform>\n   ```\n   If the venue's `cadence_cap_per_week` is already met, **refuse** to queue\n   this draft this cycle (do not reject it permanently — it may queue next\n   cycle).\n5. **Relevance check** — the draft's rationale\u002Fbody must carry the target\n   venue's recorded `self_promo_rule` from `.autospec\u002Fgrowth.yml`\n   (`targets.communities[*].self_promo_rule`); a draft that ignores the\n   venue's self-promo rule is treated as an ethics-gate failure, not queued.\n6. **Build the approval-queue body**:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-outbound-queue.sh\" --build-body \u003Cdraft.json>\n   ```\n7. **File the control issue** — create a `growth\u002Fneeds-approval` issue in\n   `approval.control_repo` (from config) carrying the built body.\n8. **Retire the source draft issue** — once the control issue is filed,\n   remove the `growth\u002Fneeds-draft` label from the source `growth:outbound`\n   issue (and add `growth\u002Fqueued`). This is load-bearing: the conductor's\n   outbound tier fires whenever an open `growth\u002Fneeds-draft` issue exists, so\n   a source issue left labelled would be re-drafted every cycle — filing a\n   duplicate control issue and PushNotification each time, and starving the\n   define\u002Fmeasure tiers. Do this only on a successful queue (a cadence\n   *refusal* in step 4 intentionally leaves the label so the draft retries\n   when the venue's window reopens).\n9. Append a `pending` ledger line for the queued draft.\n10. Send a `PushNotification` so a human knows an approval is waiting.\n\n**Outbound is package-only.** This skill only ever prepares and files a\ndraft for human approval — it never posts, submits, or publishes outbound\ncontent to any external platform on its own.\n\n## R3 — Handle approvals\n\n*(full pipeline and `outbound` mode — skipped in `measure` mode)*\n\nFor each open `growth\u002Fneeds-approval` control issue in `approval.control_repo`:\n\n1. Read the issue's labels:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-outbound-queue.sh\" --read-state \u003Clabel-csv>\n   ```\n2. Route by state, then **clear the serviced state** so the conductor's\n   outbound tier does not re-service the same control issue every cycle (the\n   tier fires whenever a `growth\u002Fneeds-approval` issue still carries an\n   `approved`\u002F`edited`\u002F`rejected`\u002F`published` state label):\n   - **`approved`** — emit a one-click-publish package (the exact copy +\n     target URL\u002Fvenue + any submission metadata) as a **comment** on the\n     control issue. The agent **never posts on the human's behalf** — the\n     comment is the deliverable. Then remove `growth\u002Fapproved` and add\n     `growth\u002Fawaiting-publish` so the package is not re-emitted each cycle.\n     Do **not** record a `published` ledger line yet — publication is not\n     confirmed. The issue now sits in `awaiting-publish` (no decision label),\n     so the tier stops selecting it until the human acts.\n   - **`published`** — the human has confirmed the post is live (pasted the\n     URL and applied `growth\u002Fpublished`). Append a `published` ledger line\n     carrying the live URL, then **close** the control issue. This is the\n     terminal state; closing it drops it from the tier's pending count. Never\n     infer publication — only this human-applied label triggers the record.\n   - **`edited`** — treat the edited copy as a new draft: re-run the R2\n     gate sequence (structural validation → ethics gate → cadence →\n     relevance) and re-queue (which files a fresh control issue). Then close\n     this superseded control issue (removing `growth\u002Fedited`).\n   - **`rejected`** — append a `rejected` ledger line and close out; do not\n     retry automatically.\n\nClearing the serviced state (relabel or close) on every branch is\nload-bearing: it is the R3-side mirror of R2's source-issue retirement, and it\nis what makes the shared `growth-outbound-pending` signal fall back to zero so\nTier G3 (measure) and Tier G1 (define) are not starved. Because the tier also\ncounts `growth\u002Fpublished`, a human-confirmed post self-triggers the terminal\nrecord promptly instead of waiting for unrelated outbound work.\n\nReiterate the invariant: **the agent never auto-posts** anything to an\nexternal platform under any control-issue state, including `approved` —\npublication is always a human action taken outside this skill.\n\n## R4 — Measure & attribute\n\n*(full pipeline and `measure` mode — skipped in `outbound` mode)*\n\n1. Run each adapter configured in `.autospec\u002Fgrowth.yml` (`measurement`\n   block), e.g.:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-adapter-gsc.sh\" \u003Cconfig.json>\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-adapter-analytics.sh\" \u003Cconfig.json>\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-adapter-github.sh\" \u003Cconfig.json>\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-adapter-rank.sh\" \u003Cconfig.json>\n   ```\n   **Missing credentials or a fetch error degrade that specific provider to\n   `{}`** (logged with the reason) — this never aborts the run; the\n   remaining adapters and the rest of R4 still proceed.\n\n   Each adapter emits its own `{provider, metrics, ts}` envelope. **Merge all\n   the adapters' envelopes for one snapshot into a single combined envelope**\n   before attribution — `growth-attribute.sh` reads one envelope's `.metrics`,\n   so passing a single adapter's output would silently drop the other\n   providers:\n   ```bash\n   # combine this snapshot's per-adapter outputs (adapter-*.json) into one\n   jq -s 'reduce .[] as $x ({provider:\"combined\", metrics:{}, ts:(.[0].ts)};\n          .metrics += $x.metrics)' adapter-*.json > snapshot.json\n   ```\n2. Run attribution over the merged before\u002Fafter snapshot envelopes (each built\n   by the merge above at the start and end of the window) and the ledger:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-attribute.sh\" \u003Cbefore.json> \u003Cafter.json> \u003Cledger.jsonl>\n   ```\n   This produces a per-lens contribution split across lenses that shipped\n   (`merged_clean`\u002F`published`) in the window.\n3. Feed the attribution result into the source-weight recompute so the next\n   `\u002Fautospec-grow-define` cycle biases budget toward lenses that actually\n   ship:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-source-weights.sh\"\n   ```\n4. Have a `TIER_A` subagent synthesize a short learnings memo from the\n   attribution output (which lenses\u002Fchannels are earning their budget,\n   which are mostly refuted or unpublished) and store\u002Fprint it alongside the\n   run summary.\n5. **Record the measure cycle in the ledger.** Append exactly one\n   `kind:\"measure\"` line so the conductor's cadence gate\n   (`growth-measure-due.sh`) can tell when this repo was last measured —\n   without it, the measure tier fires every cycle forever. Use the canonical\n   append-only writer, which enforces the full 10-key line schema:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-ledger.sh\" --append \"$(jq -n \\\n     --arg ts \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\" \\\n     --arg reason \"$MEASURE_SUMMARY\" \\\n     '{round:0, source:\"measure\", title:\"measure cycle\",\n       norm_title:(\"measure-\" + $ts), channel:\"measurement\",\n       kind:\"measure\", issue:0, outcome:\"measured\",\n       reason:$reason, ts:$ts}')\"\n   ```\n   `issue:0` keeps the line out of the per-issue `latest` collapse (it is\n   recorded individually, like a refutation). Append this line whenever R4\n   runs to completion — in both full-pipeline and `measure` mode — even when\n   every adapter degraded to `{}`, because a completed (if empty) measure\n   pass still resets the cadence clock. Set `$MEASURE_SUMMARY` to a one-line\n   digest of the attribution result (or the degradation reason if all\n   adapters returned `{}`).\n\n## Stop\n\nPrint a run summary and hand off — one pass per invocation, do not loop:\n\n```\nPhase R4 complete on {repo}.\n- artifact drain: \u003CN> issues (\u003CA> merged_clean, \u003CB> failed)\n- outbound: \u003CN> drafted, \u003CA> queued pending, \u003CB> rejected, \u003CC> refused (cadence)\n- approvals: \u003CN> published, \u003CA> re-queued (edited), \u003CB> rejected\n- attribution: \u003Csummary of per-lens contribution \u002F adapter degradations>\n- ledger: \u003Cpath to .autospec\u002Fgrowth\u002Fledger.jsonl>\n\nGrowth runs unattended under \u002Fautospec-autonomous, which drives this skill's\noutbound and measure modes on its own cadence; re-run \u002Fautospec-grow-define\nto plan the next cycle, or invoke this skill directly for a one-off pass.\n```\n","# autospec-grow-run workflow (harness-neutral)\n\nRun the implementation half of the autospec-growth pipeline for a\nproduct\u002Fsite opted into `.autospec\u002Fgrowth.yml`: **drain\n`growth:artifact` issues → draft\u002Fgate\u002Fqueue `growth:outbound` issues →\nhandle human approvals → measure and attribute.** This skill picks up\nwhere `\u002Fautospec-grow-define` stops.\n\nManage your own context — never exceed 60%. Delegate to subagents whenever\nyour harness supports it; do not draft outbound copy or run the ethics gate\ndirectly in the main conversation when a subagent can do it.\n\n\u003C!-- autospec-block:startup-self-update SKILL_NAME=autospec-grow-run -->\n\n## Self-update mode\n\nIf the invocation argument matches the regex `^\\s*update\\s*$` (case-insensitive,\nwhitespace-padded), this skill enters self-update mode and does not run the\nnormal pipeline:\n\n1. **Detect harness** by checking which install path exists for this skill:\n   - Claude Code: `~\u002F.claude\u002Fskills\u002Fautospec-grow-run\u002FSKILL.md`\n   - OpenCode:    `~\u002F.config\u002Fopencode\u002Fagent\u002Fautospec-grow-run.md`\n   - Codex CLI:   `~\u002F.codex\u002Fprompts\u002Fautospec-grow-run.md`\n2. **Re-install the full autospec suite from `main`** by piping the canonical\n   installer:\n   ```bash\n   curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fberlinguyinca\u002Fautospec\u002Fmain\u002Fbootstrap.sh | bash -s -- --skill all --harness all --update\n   ```\n   Run this one-liner once; it refreshes all autospec skills across all\n   harnesses. When you author this skill's own `SKILL.md` by hand, mirror the\n   change into the trio by editing `skills\u002Fautospec-grow-run\u002FSKILL.md` and\n   then re-deriving `codex\u002Fprompt.md` and `opencode\u002Fagent.md` with the repo's\n   trio-derivation helper (`derive-trio.sh`, run `--in-place`), then\n   regenerating the skill goldens with the repo's golden-generation helper\n   (`gen-skill-goldens.sh`) for `autospec-grow-run` — never hand-edit the\n   derived copies.\n3. **Show the diff** between the prior installed file(s) and the freshly\n   fetched copy (e.g. `diff \u003C(cat \u003Cprior>) \u003C(curl -fsSL ...SKILL.md)` or the\n   equivalent recorded by the installer).\n4. **Stop.** Do not enter Phase R0 \u002F any pipeline phase. Print the upgrade\n   summary and return to the user.\n\nIf no install path is detected, print `Self-update: no installed copy of\nautospec-grow-run found; run install.sh first.` and exit.\n\n## Run modes\n\nThe invocation argument (after the `update` check above) selects which phases\nrun. Match the argument case-insensitively, ignoring surrounding whitespace:\n\n- **`outbound`** (argument matches `^\\s*outbound\\s*$`) — **outbound-only\n  mode**: run R0 (detect) then R2 (draft → gate → queue) and R3 (handle\n  approvals). **Skip R1 and R4.** The artifact drain (R1) is the autonomous\n  conductor's Tier 1 job, and measurement (R4) is its own cadence-gated tier;\n  re-running either here would duplicate that work.\n- **`measure`** (argument matches `^\\s*measure\\s*$`) — **measure-only\n  mode**: run R0 (detect) then R4 (measure & attribute). **Skip R1, R2, and\n  R3.** This is what the conductor's cadence-gated measure tier invokes.\n- **anything else \u002F no argument** — **full pipeline**: R0 → R1 → R2 → R3 → R4,\n  exactly as described below.\n\nResolve the mode once in R0 and hold it for the run. Each phase below names\nthe modes it runs in; when a phase is skipped for the active mode, do not\nemit its ledger lines or notifications — proceed to the next phase it applies\nto. The conductor's outbound and measure tiers rely on these narrow modes so\neach tier does exactly its own slice of work.\n\n## Required capabilities & harness adapter\n\nThis workflow assumes seven capabilities. Map each one to your harness's\nactual tool. If a capability is missing, use the listed fallback.\n\n| Capability                  | Claude Code                          | OpenCode                                 | Codex CLI                                | Fallback if missing                                |\n|-----------------------------|---------------------------------------|-------------------------------------------|---------------------------------------------|-----------------------------------------------------|\n| Subagent dispatch (draft\u002Freview\u002Fattribute) | `Agent` (subagent_type=general-purpose) | nested `task` agent, await output | spawn nested CLI session | Do the work in-thread (more context cost) |\n| GitHub issue\u002Flabel\u002Fcomment ops | `gh` CLI via Bash | `gh` CLI via shell tool | `gh` CLI via `apply_patch`\u002Fshell | Abort the affected step and log a reason; never fake a `gh` result |\n| JSON\u002FJSONL manipulation | `jq` via Bash | `jq` via shell tool | `jq` via shell | Do the parsing inline in the subagent prompt |\n| HTTP calls for measurement adapters | `curl` via Bash | `curl` via shell tool | `curl` via shell | Degrade that adapter to `{}` and continue |\n| Human-visible run notifications | `PushNotification` | inline message \u002F OS notify equivalent | inline message | Print the notice to the transcript and continue |\n| Browser (site\u002FUI verification, best-effort) | `autospec-playwright` \u002F Claude-in-Chrome if available | equivalent browser tool if available | not typically available | Skip browser verification; note it as unverified |\n| Subagent model tier         | Tier A: `opus` + `ultrathink`; Tier B: `sonnet` + medium thinking | Tier A: top `task` model + high reasoning; Tier B: smaller-tier `task` + medium reasoning | Tier A: top GPT + `reasoning_effort=high`; Tier B: current spark\u002Fcost-optimized Codex + `reasoning_effort=medium` | Honor the per-phase tier mapping in AGENTS.md; retry the same subagent UP on unavailability |\n\u003C!-- autospec-block:harness-adapter-core -->\n\n**Persistent project notes**: write durable preferences to **`AGENTS.md`** in\nthe repo root — recognized by Claude Code, OpenCode, and Codex. Per\nAGENTS.md, subagent dispatches use a **two-tier policy**: Tier A (top model +\nextended thinking) for drafting, gate-review, and attribution work; Tier B\n(cheaper model + medium thinking) for mechanical steps. The orchestrator\nkeeps the user's invoked model. Fall back UP the tier on quota\u002Fcapacity or\nother unavailability by retrying the same subagent with the stronger tier\nwhile preserving parent context.\n\n## Harness detection + Model tier\n\nDetect your harness by checking available tools before Phase R0:\n\n1. **Claude Code** — the `Agent` tool with a `subagent_type` parameter is\n   available.\n   - `TIER_A` = `opus` + `ultrathink`  (the alias, which resolves to the current Claude Opus generation)\n   - `TIER_B` = `sonnet`               (the alias, which resolves to the current Claude Sonnet generation)\n\n2. **OpenCode** — a `task` tool with model\u002Ftier configuration is available\n   (no `subagent_type`).\n   - `TIER_A` = top-tier task model + high reasoning\n   - `TIER_B` = smaller-tier task model + medium reasoning\n\n3. **Codex CLI** — neither `Agent` nor a configurable `task` tool is\n   available; `apply_patch` is the primary edit tool.\n   - `TIER_A` = current top GPT model + `reasoning_effort=high`\n   - `TIER_B` = the spark \u002F cost-optimized variant of the configured model when one exists, else the configured model + `reasoning_effort=medium`\n\n**Fallback rule:** If `TIER_B` is not available in your harness (model\nunknown, quota\u002Fcapacity failure, authorization failure, or tool call returns\nan error for that model), silently retry the same subagent dispatch with\n`TIER_A`. Preserve the parent context on retry; for Codex native subagents,\nfork\u002Finherit the current conversation context and use the latest top GPT\nmodel instead of moving the work into the main session. Never ask the user.\n\nHold `TIER_A` and `TIER_B` for the entire skill run. Resolve both once, at\nskill start, before Phase R0.\n\n> **Model tier:** `TIER_A` (draft, gate-review, attribute); `TIER_B` (cheap mechanical).\n\n| Phase | Model tier | Why |\n|---|---|---|\n| R2 outbound draft | `TIER_A` | Drafting on-topic, non-spammy outreach copy that respects each venue's self-promo rule requires judgment. |\n| R2\u002FR3 ethics gate reviewer | `TIER_A` | Must actively look for disclosure gaps, spam framing, and policy violations — cheap models default to agreeing. |\n| R4 attribution synthesis \u002F learnings memo | `TIER_A` | Turning raw ledger + metric deltas into a defensible per-lens attribution narrative is judgment-heavy. |\n| Config read\u002Fvalidate, JSONL plumbing, `growth-*.sh`\u002F`grow-define-*.sh` invocations, ledger writes | `TIER_B` (or no subagent at all — deterministic scripts) | Mechanical: parsing, validating, and shelling out to deterministic scripts. |\n\n## Relevant memory injection\n\nBefore executing the main pipeline phases, call the injector to surface\nrelevant saved lessons:\n\n```bash\nbash \"${AUTOSPEC_SCRIPTS_DIR:-$HOME\u002F.autospec\u002Fscripts}\u002Finject-relevant-memory.sh\" \\\n  --context \"autospec-grow-run drain content-quality outbound ethics approval attribution\" \\\n  --top-k 5\n```\n\nPrepend the output block (if non-empty) to your working context. This\nsurfaces lessons like the growth-ethics blocklist immutability rule, the\n\"never auto-post\" invariant, and prior adapter fail-closed pitfalls before\nthey recur.\n\n## R0 — Detect\n\n*(runs in every mode)*\n\n0. Resolve the **run mode** from the invocation argument (see **Run modes**\n   above): `outbound`, `measure`, or full pipeline. Hold it for the run — it\n   decides which of R1–R4 execute.\n1. Detect your harness (see above) and resolve `TIER_A`\u002F`TIER_B`.\n2. Check for `.autospec\u002Fgrowth.yml`. If absent, print:\n   `\"No .autospec\u002Fgrowth.yml found — this repo is not opted into autospec-growth. See skills\u002Fautospec-grow-define\u002FREADME.md to configure a product\u002Fsite and try again.\"`\n   and **exit** (inert; do not create the file, do not proceed to any phase).\n3. Render the YAML as JSON (e.g. `yq -o=json . .autospec\u002Fgrowth.yml`) and\n   validate it:\n   ```bash\n   bash \"${AUTOSPEC_SCRIPTS_DIR:-$HOME\u002F.autospec\u002Fscripts}\u002Fvalidate-growth-config.sh\" \u003Cconfig.json>\n   ```\n   If validation fails (non-zero exit), print the validator's stderr reason\n   and **exit** — do not proceed with a partially-valid config.\n4. Resolve the growth-shared script directory once for the rest of the run:\n   `AUTOSPEC_SCRIPTS_DIR=\"${AUTOSPEC_SCRIPTS_DIR:-$HOME\u002F.autospec\u002Fscripts}\"`\n   (this is where every `growth-*.sh`, `grow-define-*.sh`, and\n   `validate-*.sh` script referenced below lives). Hold the validated\n   `\u003Cconfig.json>` path for the rest of the run.\n\n## R1 — Artifact drain\n\n*(full pipeline only — skipped in `outbound` and `measure` modes)*\n\n1. Enumerate open `growth:artifact` issues in the target repo:\n   ```bash\n   gh issue list --repo \u003Cowner\u002Fname> --label growth:artifact --state open --json number,title,labels\n   ```\n2. For each issue, in turn:\n   - Invoke `\u002Fautospec-run` against that single issue (invoked as the\n     existing skill, not forked\u002Freimplemented — this skill does not\n     duplicate `\u002Fautospec-run`'s own decompose\u002Fimplement\u002Fmerge machinery).\n     Because the issue carries `growth:artifact`, `\u002Fautospec-run` itself\n     runs the content-quality gate (`GATE=growth`: deterministic\n     `growth-content-quality-precheck.sh` pre-checks plus a `TIER_A`\n     reviewer, with adaptive retry on failure) before allowing that\n     issue's PR to auto-merge, alongside the standard code reviewer, the\n     `growth-ethics` gate, and `autospec-secaudit`. R1 does not re-run any\n     of these — the gate is single-sourced in `\u002Fautospec-run`.\n   - Append a ledger line: `merged_clean` on success, `failed` on a\n     per-issue failure. A per-issue failure does **not** stop the drain —\n     move on to the next `growth:artifact` issue.\n\n## R2 — Outbound draft → gate → queue\n\n*(full pipeline and `outbound` mode — skipped in `measure` mode)*\n\nFor each open `growth:outbound` (or `growth\u002Fneeds-draft`) issue, in turn:\n\n1. **Draft** (`TIER_A` subagent) — produce outbound copy matching\n   `skills\u002Fautospec-shared\u002Fschemas\u002Fgrowth-outbound-draft.schema.json`.\n2. **Structural validation**:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fvalidate-outbound-draft.sh\" \u003Cdraft.json>\n   ```\n   A malformed draft is **skipped and logged** — do not attempt to repair it\n   in-place; log the reason and move to the next issue.\n3. **Ethics gate** — deterministic disclosure pre-check, then the LLM gate:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-ethics-precheck.sh\" --disclosure \u003Cdraft.md>\n   ```\n   followed by a `TIER_A` `growth-ethics` reviewer subagent, both wrapped in\n   a **5-attempt adaptive-retry loop** (findings fed back as re-draft\n   directives). If the gate is still blocked after 5 attempts, append a\n   `rejected` ledger line, **retire the source issue** (remove its\n   `growth\u002Fneeds-draft` label, add `growth\u002Frejected`), and move on — do not\n   queue a blocked draft. Retiring it stops the conductor's outbound tier from\n   re-drafting the same hopeless issue every cycle.\n4. **Cadence check**:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-ethics-precheck.sh\" --cadence \u003Cconfig.json> \u003Cledger.jsonl> \u003Cplatform>\n   ```\n   If the venue's `cadence_cap_per_week` is already met, **refuse** to queue\n   this draft this cycle (do not reject it permanently — it may queue next\n   cycle).\n5. **Relevance check** — the draft's rationale\u002Fbody must carry the target\n   venue's recorded `self_promo_rule` from `.autospec\u002Fgrowth.yml`\n   (`targets.communities[*].self_promo_rule`); a draft that ignores the\n   venue's self-promo rule is treated as an ethics-gate failure, not queued.\n6. **Build the approval-queue body**:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-outbound-queue.sh\" --build-body \u003Cdraft.json>\n   ```\n7. **File the control issue** — create a `growth\u002Fneeds-approval` issue in\n   `approval.control_repo` (from config) carrying the built body.\n8. **Retire the source draft issue** — once the control issue is filed,\n   remove the `growth\u002Fneeds-draft` label from the source `growth:outbound`\n   issue (and add `growth\u002Fqueued`). This is load-bearing: the conductor's\n   outbound tier fires whenever an open `growth\u002Fneeds-draft` issue exists, so\n   a source issue left labelled would be re-drafted every cycle — filing a\n   duplicate control issue and PushNotification each time, and starving the\n   define\u002Fmeasure tiers. Do this only on a successful queue (a cadence\n   *refusal* in step 4 intentionally leaves the label so the draft retries\n   when the venue's window reopens).\n9. Append a `pending` ledger line for the queued draft.\n10. Send a `PushNotification` so a human knows an approval is waiting.\n\n**Outbound is package-only.** This skill only ever prepares and files a\ndraft for human approval — it never posts, submits, or publishes outbound\ncontent to any external platform on its own.\n\n## R3 — Handle approvals\n\n*(full pipeline and `outbound` mode — skipped in `measure` mode)*\n\nFor each open `growth\u002Fneeds-approval` control issue in `approval.control_repo`:\n\n1. Read the issue's labels:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-outbound-queue.sh\" --read-state \u003Clabel-csv>\n   ```\n2. Route by state, then **clear the serviced state** so the conductor's\n   outbound tier does not re-service the same control issue every cycle (the\n   tier fires whenever a `growth\u002Fneeds-approval` issue still carries an\n   `approved`\u002F`edited`\u002F`rejected`\u002F`published` state label):\n   - **`approved`** — emit a one-click-publish package (the exact copy +\n     target URL\u002Fvenue + any submission metadata) as a **comment** on the\n     control issue. The agent **never posts on the human's behalf** — the\n     comment is the deliverable. Then remove `growth\u002Fapproved` and add\n     `growth\u002Fawaiting-publish` so the package is not re-emitted each cycle.\n     Do **not** record a `published` ledger line yet — publication is not\n     confirmed. The issue now sits in `awaiting-publish` (no decision label),\n     so the tier stops selecting it until the human acts.\n   - **`published`** — the human has confirmed the post is live (pasted the\n     URL and applied `growth\u002Fpublished`). Append a `published` ledger line\n     carrying the live URL, then **close** the control issue. This is the\n     terminal state; closing it drops it from the tier's pending count. Never\n     infer publication — only this human-applied label triggers the record.\n   - **`edited`** — treat the edited copy as a new draft: re-run the R2\n     gate sequence (structural validation → ethics gate → cadence →\n     relevance) and re-queue (which files a fresh control issue). Then close\n     this superseded control issue (removing `growth\u002Fedited`).\n   - **`rejected`** — append a `rejected` ledger line and close out; do not\n     retry automatically.\n\nClearing the serviced state (relabel or close) on every branch is\nload-bearing: it is the R3-side mirror of R2's source-issue retirement, and it\nis what makes the shared `growth-outbound-pending` signal fall back to zero so\nTier G3 (measure) and Tier G1 (define) are not starved. Because the tier also\ncounts `growth\u002Fpublished`, a human-confirmed post self-triggers the terminal\nrecord promptly instead of waiting for unrelated outbound work.\n\nReiterate the invariant: **the agent never auto-posts** anything to an\nexternal platform under any control-issue state, including `approved` —\npublication is always a human action taken outside this skill.\n\n## R4 — Measure & attribute\n\n*(full pipeline and `measure` mode — skipped in `outbound` mode)*\n\n1. Run each adapter configured in `.autospec\u002Fgrowth.yml` (`measurement`\n   block), e.g.:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-adapter-gsc.sh\" \u003Cconfig.json>\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-adapter-analytics.sh\" \u003Cconfig.json>\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-adapter-github.sh\" \u003Cconfig.json>\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-adapter-rank.sh\" \u003Cconfig.json>\n   ```\n   **Missing credentials or a fetch error degrade that specific provider to\n   `{}`** (logged with the reason) — this never aborts the run; the\n   remaining adapters and the rest of R4 still proceed.\n\n   Each adapter emits its own `{provider, metrics, ts}` envelope. **Merge all\n   the adapters' envelopes for one snapshot into a single combined envelope**\n   before attribution — `growth-attribute.sh` reads one envelope's `.metrics`,\n   so passing a single adapter's output would silently drop the other\n   providers:\n   ```bash\n   # combine this snapshot's per-adapter outputs (adapter-*.json) into one\n   jq -s 'reduce .[] as $x ({provider:\"combined\", metrics:{}, ts:(.[0].ts)};\n          .metrics += $x.metrics)' adapter-*.json > snapshot.json\n   ```\n2. Run attribution over the merged before\u002Fafter snapshot envelopes (each built\n   by the merge above at the start and end of the window) and the ledger:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-attribute.sh\" \u003Cbefore.json> \u003Cafter.json> \u003Cledger.jsonl>\n   ```\n   This produces a per-lens contribution split across lenses that shipped\n   (`merged_clean`\u002F`published`) in the window.\n3. Feed the attribution result into the source-weight recompute so the next\n   `\u002Fautospec-grow-define` cycle biases budget toward lenses that actually\n   ship:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-source-weights.sh\"\n   ```\n4. Have a `TIER_A` subagent synthesize a short learnings memo from the\n   attribution output (which lenses\u002Fchannels are earning their budget,\n   which are mostly refuted or unpublished) and store\u002Fprint it alongside the\n   run summary.\n5. **Record the measure cycle in the ledger.** Append exactly one\n   `kind:\"measure\"` line so the conductor's cadence gate\n   (`growth-measure-due.sh`) can tell when this repo was last measured —\n   without it, the measure tier fires every cycle forever. Use the canonical\n   append-only writer, which enforces the full 10-key line schema:\n   ```bash\n   bash \"$AUTOSPEC_SCRIPTS_DIR\u002Fgrowth-ledger.sh\" --append \"$(jq -n \\\n     --arg ts \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\" \\\n     --arg reason \"$MEASURE_SUMMARY\" \\\n     '{round:0, source:\"measure\", title:\"measure cycle\",\n       norm_title:(\"measure-\" + $ts), channel:\"measurement\",\n       kind:\"measure\", issue:0, outcome:\"measured\",\n       reason:$reason, ts:$ts}')\"\n   ```\n   `issue:0` keeps the line out of the per-issue `latest` collapse (it is\n   recorded individually, like a refutation). Append this line whenever R4\n   runs to completion — in both full-pipeline and `measure` mode — even when\n   every adapter degraded to `{}`, because a completed (if empty) measure\n   pass still resets the cadence clock. Set `$MEASURE_SUMMARY` to a one-line\n   digest of the attribution result (or the degradation reason if all\n   adapters returned `{}`).\n\n## Stop\n\nPrint a run summary and hand off — one pass per invocation, do not loop:\n\n```\nPhase R4 complete on {repo}.\n- artifact drain: \u003CN> issues (\u003CA> merged_clean, \u003CB> failed)\n- outbound: \u003CN> drafted, \u003CA> queued pending, \u003CB> rejected, \u003CC> refused (cadence)\n- approvals: \u003CN> published, \u003CA> re-queued (edited), \u003CB> rejected\n- attribution: \u003Csummary of per-lens contribution \u002F adapter degradations>\n- ledger: \u003Cpath to .autospec\u002Fgrowth\u002Fledger.jsonl>\n\nGrowth runs unattended under \u002Fautospec-autonomous, which drives this skill's\noutbound and measure modes on its own cadence; re-run \u002Fautospec-grow-define\nto plan the next cycle, or invoke this skill directly for a one-off pass.\n```\n",{"name":5,"description":7},"main","9e7f04357ff46ab731d4f56a4ac5ca5449c13bb0","skills\u002Fautospec-grow-run",1,"https:\u002F\u002Fgithub.com\u002Fberlinguyinca\u002Fautospec","https:\u002F\u002Fgithub.com\u002Fberlinguyinca","Love to lead, code, cook and contribute to open source and believe that you can learn anything you set your mind too.\r\n","2026-11-11 07:09:35",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add berlinguyinca\u002Fautospec --skill autospec-grow-run",{"tool":58,"command":59},"bunx","bunx skills add berlinguyinca\u002Fautospec --skill autospec-grow-run",{"tool":61,"command":62},"pnpm","pnpm dlx skills add berlinguyinca\u002Fautospec --skill autospec-grow-run","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fberlinguyinca\u002Fautospec\u002Fblob\u002Fmain\u002Fskills\u002Fautospec-grow-run\u002FSKILL.md",true,[66,72,78,82,86],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"codex\u002Fprompt.md","REFERENCE","参考文档",21287,"https:\u002F\u002Fgithub.com\u002Fberlinguyinca\u002Fautospec\u002Fblob\u002Fmain\u002Fskills\u002Fautospec-grow-run\u002Fcodex\u002Fprompt.md",{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"install.sh","SCRIPT","脚本",13287,"https:\u002F\u002Fgithub.com\u002Fberlinguyinca\u002Fautospec\u002Fblob\u002Fmain\u002Fskills\u002Fautospec-grow-run\u002Finstall.sh",{"path":79,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":80,"sourceHtmlUrl":81},"opencode\u002Fagent.md",21681,"https:\u002F\u002Fgithub.com\u002Fberlinguyinca\u002Fautospec\u002Fblob\u002Fmain\u002Fskills\u002Fautospec-grow-run\u002Fopencode\u002Fagent.md",{"path":83,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":84,"sourceHtmlUrl":85},"README.md",4925,"https:\u002F\u002Fgithub.com\u002Fberlinguyinca\u002Fautospec\u002Fblob\u002Fmain\u002Fskills\u002Fautospec-grow-run\u002FREADME.md",{"path":87,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":88,"sourceHtmlUrl":89},"uninstall.sh",3942,"https:\u002F\u002Fgithub.com\u002Fberlinguyinca\u002Fautospec\u002Fblob\u002Fmain\u002Fskills\u002Fautospec-grow-run\u002Funinstall.sh",[91,104,113,122,148,171],{"skillNo":92,"name":93,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":101,"publishedAt":39},"01M71RJHYMKPTC9AAPXWQ6F4RT","trio-pass-skill","https:\u002F\u002Fgithub.com\u002Fberlinguyinca\u002Fautospec\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Flockstep-trio-pass\u002FSKILL.md",[96],{"categoryNo":97,"categoryName":98,"taxonomyType":99,"taxonomyTypeDesc":100},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[102,103],"trio","trio pass skill",{"skillNo":105,"name":106,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":110,"publishedAt":39},"01M71RJFBQ1KAF9XM3T3Y4VMSK","duo-pass-skill","https:\u002F\u002Fgithub.com\u002Fberlinguyinca\u002Fautospec\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Flockstep-duo-pass\u002FSKILL.md",[109],{"categoryNo":97,"categoryName":98,"taxonomyType":99,"taxonomyTypeDesc":100},[111,112],"duo pass skill","duo",{"skillNo":114,"name":115,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":119,"publishedAt":39},"01M71RJDT1TB3P9TRWR6A534FB","duo-divergence-skill","https:\u002F\u002Fgithub.com\u002Fberlinguyinca\u002Fautospec\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Flockstep-duo-divergence\u002FSKILL.md",[118],{"categoryNo":97,"categoryName":98,"taxonomyType":99,"taxonomyTypeDesc":100},[120,112,121],"duo divergence skill","divergence",{"skillNo":123,"name":20,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":130,"publishedAt":39},"01M71RJAC4NNEQSYBDSY3NZS73","Use when the user wants to ship a feature end-to-end across multiple commits — bootstraps repo if missing, brainstorms a design spec, decomposes into linked GitHub issues, or splits an existing spec into issues, then runs an autonomous implementation loop with auto-merge.","https:\u002F\u002Fgithub.com\u002Fberlinguyinca\u002Fautospec\u002Fblob\u002Fmain\u002Fskills\u002Fautospec\u002FSKILL.md",[127],{"categoryNo":128,"categoryName":129,"taxonomyType":99,"taxonomyTypeDesc":100},"01JBSEEDCAT000000000000015","视觉设计",[20,131,132,34,133,134,32,135,136,137,138,139,140,141,142,143,144,145,146,147],"ship a feature","end","design","autonomous","loop","when","across","design spec","merge","ship","implementation loop","github issues","feature","commits","repo","missing","use",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":154,"publishedAt":39},"01M71RJ4F9HT8PT26CKNM9XE1M","autospec-upgrade","Use when the user wants to upgrade an Angular, Next.js, or React project to the latest official versions safely — by locking observable behavior before touching versions, upgrading one major at a time with official codemods, and gating completion on mutation score rather than coverage theater.","https:\u002F\u002Fgithub.com\u002Fberlinguyinca\u002Fautospec\u002Fblob\u002Fmain\u002Fskills\u002Fautospec-upgrade\u002FSKILL.md",[],[155,20,156,157,158,159,160,161,162,136,163,164,29,165,147,166,167,168,169,170],"autospec upgrade","upgrade","mutation","coverage","official","project","time","gating","angular","react","at","Next.js","one","with","behavior","latest",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":182,"publishedAt":39},"01M71RJ28FJ4PM6DXHB7T5CF8H","autospec-ui-audit","Use when a React Router application needs a deterministic whole-site route inventory before UI, UX, navigation, or evidence auditing begins.","https:\u002F\u002Fgithub.com\u002Fberlinguyinca\u002Fautospec\u002Fblob\u002Fmain\u002Fskills\u002Fautospec-ui-audit\u002FSKILL.md",[177],{"categoryNo":178,"categoryName":179,"taxonomyType":180,"taxonomyTypeDesc":181},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[183,20,184,185,186,147,187,188,189,190,191,192,193,194,195,164,196,136,197],"ui audit","audit","autospec ui audit","ui","inventory","evidence","deterministic","route","ux","site","react router","navigation","application","needs","router"]