From 7d760ff1d165a88cb9544ea5cbdbc5004a0ad1fd Mon Sep 17 00:00:00 2001 From: Sinabina Date: Fri, 17 Jul 2026 11:08:51 -0700 Subject: [PATCH] document gstack 2 evidence and blocked gates --- AGENTS.md | 237 +- ARCHITECTURE.md | 76 + CLAUDE.md | 92 +- CONTRIBUTING.md | 129 +- README.md | 124 +- docs/gbrain-write-surfaces.md | 2 +- docs/gstack-2/ARCHITECTURE.md | 266 + docs/gstack-2/CONTEXT-DEV.md | 162 + docs/gstack-2/HOST-COMPATIBILITY.md | 179 + docs/gstack-2/IOS-PHYSICAL-DEVICE.md | 196 + docs/gstack-2/JUDGMENT-PARITY.md | 18 + docs/gstack-2/JUDGMENT-PROVENANCE.json | 7916 ++++++++++++++++++++++++ docs/gstack-2/PRIVACY.md | 145 + docs/gstack-2/SCENARIOS.md | 31 + docs/gstack-2/SEMANTIC-PARITY.md | 107 + docs/gstack-2/SKILL-MIGRATION.md | 79 + docs/gstack-2/STATUS.md | 203 +- docs/gstack-2/TEST-EVIDENCE.md | 75 +- docs/gstack-2/UPGRADE-AND-ROLLBACK.md | 197 + 19 files changed, 10026 insertions(+), 208 deletions(-) create mode 100644 docs/gstack-2/ARCHITECTURE.md create mode 100644 docs/gstack-2/CONTEXT-DEV.md create mode 100644 docs/gstack-2/HOST-COMPATIBILITY.md create mode 100644 docs/gstack-2/IOS-PHYSICAL-DEVICE.md create mode 100644 docs/gstack-2/JUDGMENT-PARITY.md create mode 100644 docs/gstack-2/JUDGMENT-PROVENANCE.json create mode 100644 docs/gstack-2/PRIVACY.md create mode 100644 docs/gstack-2/SCENARIOS.md create mode 100644 docs/gstack-2/SEMANTIC-PARITY.md create mode 100644 docs/gstack-2/SKILL-MIGRATION.md create mode 100644 docs/gstack-2/UPGRADE-AND-ROLLBACK.md diff --git a/AGENTS.md b/AGENTS.md index 69651022d..99a46481c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,136 +1,123 @@ -# gstack — AI Engineering Workflow +# gstack — AI engineering judgment layer -gstack is a collection of SKILL.md files that give AI agents structured roles for -software development. Each skill is a specialist: CEO reviewer, eng manager, -designer, QA lead, release engineer, debugger, and more. +GStack 2 exposes exactly six default public skills. Treat this as a routing +surface over preserved specialist judgment, not permission to simplify that +judgment into generic checklists. -## Available skills +## Public skills -Skills live in `.agents/skills/` (or `~/.claude/skills/gstack/` on Claude Code). -Invoke them by name (e.g., `/office-hours`). +| Skill | Primary responsibility | +|---|---| +| `/plan` | Product framing, CEO scope, engineering architecture, DX, autoplan, executable specs, and planning preferences. | +| `/design` | Design systems, alternatives, HTML/CSS, plan and live-interface review, and physical-iOS HIG review. | +| `/qa` | Report-only or fix-and-verify web QA, physical-iOS QA, DX journeys, performance, and canaries. | +| `/debug` | Root-cause investigation, physical-iOS fixes, and internal safety controls. | +| `/review` | Diff, security, repository-health, and independent outside-voice review. | +| `/ship` | PR preparation, landing/deployment, queue inspection, release docs, upgrade, and internal iOS release operations. | -### Plan-mode reviews +`/plan` has exactly six top-level modes: **Discovery, Product, Engineering, +DX, Specification, and Full chain**. Planning preferences and other old names +are internal routing aliases, not additional top-level modes. -| Skill | What it does | -|-------|-------------| -| `/office-hours` | Start here. Reframes your product idea before you write code. | -| `/plan-ceo-review` | CEO-level review: find the 10-star product in the request. | -| `/plan-eng-review` | Lock architecture, data flow, edge cases, and tests. | -| `/plan-design-review` | Rate each design dimension 0-10, explain what a 10 looks like. | -| `/plan-devex-review` | DX-mode review: TTHW, magical moments, friction points, persona traces. | -| `/plan-tune` | Self-tune AskUserQuestion sensitivity per question. | -| `/autoplan` | One command runs CEO → design → eng → DX review. | -| `/design-consultation` | Build a complete design system from scratch. | -| `/spec` | Turn vague intent into a precise, executable spec in five phases. Files a GitHub issue, optionally spawns a Claude Code agent in a fresh worktree, and lets `/ship` close the source issue on merge. | +Each dispatcher must infer from product stage, surface, requested artifact, +mutation authority, evidence needs, and deployment state—not prompt keywords. +Before executing, state: -### Implementation + review - -| Skill | What it does | -|-------|-------------| -| `/review` | Pre-landing PR review. Finds bugs that pass CI but break in prod. | -| `/codex` | Second opinion via OpenAI Codex. Review, challenge, or consult modes. | -| `/investigate` | Systematic root-cause debugging. No fixes without investigation. | -| `/design-review` | Live-site visual audit + fix loop with atomic commits. | -| `/design-shotgun` | Generate multiple AI design variants, comparison board, iterate. | -| `/design-html` | Generate production-quality Pretext-native HTML/CSS. | -| `/devex-review` | Live developer experience audit (TTHW measured against the real flow). | -| `/qa` | Open a real browser, find bugs, fix them, re-verify. | -| `/qa-only` | Same methodology as /qa but report only — no code changes. | -| `/scrape` | Pull data from a web page. First call prototypes; codified call runs in ~200ms. | -| `/skillify` | Codify the most recent successful `/scrape` flow into a permanent browser-skill. | - -### Release + deploy - -| Skill | What it does | -|-------|-------------| -| `/ship` | Run tests, review, push, open PR. Workspace-aware version queue. | -| `/land-and-deploy` | Merge the PR, wait for CI and deploy, verify production health. | -| `/canary` | Post-deploy monitoring loop using the browse daemon. | -| `/landing-report` | Read-only dashboard for the workspace-aware ship queue. | -| `/document-release` | Update all docs to match what you just shipped. | -| `/document-generate` | Generate Diataxis docs (tutorial / how-to / reference / explanation) from code. | -| `/setup-deploy` | One-time deploy config detection (Fly.io, Render, Vercel, etc.). | -| `/gstack-upgrade` | Update gstack to the latest version. | - -### Operational + memory - -| Skill | What it does | -|-------|-------------| -| `/context-save` | Save working context (git state, decisions, remaining work). | -| `/context-restore` | Resume from a saved context, even across Conductor workspaces. | -| `/learn` | Manage what gstack learned across sessions. | -| `/retro` | Weekly retro with per-person breakdowns and shipping streaks. | -| `/health` | Code quality dashboard (type checker, linter, tests, dead code). | -| `/benchmark` | Performance regression detection (page load, Core Web Vitals). | -| `/benchmark-models` | Cross-model benchmark for skills (Claude, GPT, Gemini side-by-side). | -| `/cso` | OWASP Top 10 + STRIDE security audit. | -| `/setup-gbrain` | Set up gbrain for cross-machine session memory sync. | -| `/sync-gbrain` | Keep gbrain current with this repo's code; refresh agent search guidance in CLAUDE.md. | - -### Browser + agent integration - -| Skill | What it does | -|-------|-------------| -| `/browse` | Headless browser — real Chromium, real clicks, ~100ms/command. | -| `/open-gstack-browser` | Launch the visible GStack Browser with sidebar + stealth. | -| `/setup-browser-cookies` | Import cookies from your real browser for authenticated testing. | -| `/pair-agent` | Pair a remote AI agent (OpenClaw, Codex, etc.) with your browser. | - -### iOS QA — drive real iPhones over USB or Tailscale (v1.43.0.0+) - -| Skill | What it does | -|-------|-------------| -| `/ios-qa` | Live-device iOS QA via USB CoreDevice tunnel + embedded StateServer. Optionally exposes the device over Tailscale so remote agents can drive it. | -| `/ios-fix` | Autonomous iOS bug fixer with regression snapshot capture. | -| `/ios-design-review` | Designer's-eye QA on a real iPhone — 10-dimension Apple HIG rubric. | -| `/ios-clean` | Convenience: strip DebugBridge + #if DEBUG wiring before a Release build. | -| `/ios-sync` | Regenerate the iOS debug bridge against the latest upstream templates. | - -Companion CLIs (run on the Mac that's plugged into the device): - -| Command | What it does | -|---------|-------------| -| `gstack-ios-qa-daemon` | Mac-side broker. Loopback by default; `--tailnet` adds a Tailscale-facing listener with capability tiers and audit logging. | -| `gstack-ios-qa-mint` | Owner-grant CLI for the tailnet allowlist (`grant`/`revoke`/`list`). | - -End-to-end walkthrough: [docs/howto-ios-testing-with-gstack.md](docs/howto-ios-testing-with-gstack.md). - -### Safety + scoping - -| Skill | What it does | -|-------|-------------| -| `/careful` | Warn before destructive commands (rm -rf, DROP TABLE, force-push). | -| `/freeze` | Lock edits to one directory. Hard block, not just a warning. | -| `/guard` | Activate both careful + freeze at once. | -| `/unfreeze` | Remove directory edit restrictions. | -| `/make-pdf` | Turn any markdown file into a publication-quality PDF. | -| `/diagram` | English in, diagram out: mermaid source + editable .excalidraw + SVG/PNG, offline. | - -## Build commands - -```bash -bun install # install dependencies -bun test # run free tests (no API spend) -bun run test:windows # curated Windows-safe subset (runs on windows-latest) -bun run build # generate docs + compile binaries -bun run gen:skill-docs # regenerate SKILL.md files from templates -bun run skill:check # health dashboard for all skills +```text +Target: +Mode: +Depth: +Mutation: +Active modules: +Skipped modules: +Web context: ``` -## Platform support +Then read every active file under `skills//references/legacy/` in full. +Its question order, pressure, smart skips, STOP/approval gates, evidence, +artifacts, mutation boundary, exit behavior, and voice are binding. Preserve +report-only versus fix behavior. List skipped primary modules and why. -- **macOS** + **Linux**: full test suite supported. -- **Windows**: curated Windows-safe subset runs on `windows-latest` via the - `windows-free-tests` CI job. Setup script (`./setup`) requires Git Bash or - MSYS today; native PowerShell support is a future expansion. The `bin/gstack-paths` - helper resolves state roots through `CLAUDE_PLUGIN_DATA` / `GSTACK_HOME` so plugin - installs work on every platform. +The exhaustive 55-command compatibility map is in +[`docs/gstack-2/SKILL-MIGRATION.md`](docs/gstack-2/SKILL-MIGRATION.md). Old +names are opt-in routing aliases and must print their replacement invocation; +they contain no copied judgment. Representative mappings: -## Key conventions +| Old invocation | GStack 2 replacement | +|---|---| +| `/office-hours` | `/plan --mode product` | +| `/plan-ceo-review` | `/plan --mode ceo` | +| `/plan-eng-review` | `/plan --mode eng` | +| `/design-consultation` | `/design --mode consult` | +| `/design-review` | `/design --mode live-review` | +| `/qa-only` | `/qa --mode report` | +| `/investigate` | `/debug --mode investigate` | +| `/cso` | `/review --mode security` | +| `/land-and-deploy` | `/ship --mode land` | -- SKILL.md files are **generated** from `.tmpl` templates. Edit the template, not the output. -- Run `bun run gen:skill-docs --host codex` to regenerate Codex-specific output. -- The browse binary provides headless browser access. Use `$B ` in skills. -- Safety skills (careful, freeze, guard) use inline advisory prose — always confirm before destructive operations. -- State paths resolve via `bin/gstack-paths` (sourced via `eval "$(...)"`). Honors `GSTACK_HOME`, `CLAUDE_PLUGIN_DATA`, `CLAUDE_PLANS_DIR`. -- The `claude` CLI binary resolves via `browse/src/claude-bin.ts` (`Bun.which()` + `GSTACK_CLAUDE_BIN` override). Set `GSTACK_CLAUDE_BIN=wsl` plus `GSTACK_CLAUDE_BIN_ARGS='["claude"]'` to run Claude through WSL on Windows. +## Installation and capabilities + +Canonical installation is standards-based: + +```bash +npx skills add time-attack/gstack +``` + +Delegate host detection, placement, project/global scope, selected-skill +installation, updates, and removal to the Agent Skills installer. Never +silently enroll a host. Pure judgment works without the optional runtime. + +The browser is the existing local Chromium/Playwright implementation. Do not +add a cloud browser or remote browser provider. Physical iOS uses only the +existing DebugBridge/CoreDevice harness; do not add an alternate device +backend. PDF and Mermaid/Excalidraw remain internal. Do not install ComfyUI, +local model weights, checkpoints, or GPU runtimes. + +Context.dev is the only new external service and only for public web context. +It is off until explicit consent. Never send authenticated/private pages, +localhost, intranet/private URLs, cookies, tokens, repository content, or user +files. When unavailable, use an explicitly selected host-native public search, +the local browser, or continue without research and label the result unverified. +Persist that choice with `gstack context select host|local-browser|none`; +`gstack context options` prints the four-choice UX without granting consent. + +## Build and verification + +```bash +bun install +bun run gen:gstack2 # regenerate six dispatchers, preserved modules, parity fixtures +bun run test:gstack2 # GStack 2 routing, provenance, parity, runtime, privacy, upgrade +bun test # full free suite, including design + iOS daemon tests +bun run test:windows # curated Windows-safe subset +bun run build +bun run skill:check +``` + +Legacy `SKILL.md` files outside `skills/` are generated from `.tmpl` templates; +edit the template, not its output. GStack 2 generated sources are identified by +their header; edit `scripts/gstack2/` inputs and regenerate instead. + +## Contribution boundaries + +- A new public command, external service, or first-party host adapter requires + an accepted issue; an external service also requires maintainer approval. +- Contributions must improve judgment/evidence, remove surface, fix a linked + reproduction, or repair infrastructure. +- New public nouns are a last resort. Prefer a mode, internal utility, or + community extension. +- Do not mutate GitHub labels/templates merely because their design is present + in this repository. +- State resolves through the host-neutral runtime under `$GSTACK_HOME` or + `~/.gstack`; do not invent host-specific state roots or shell-evaluated path + assignments. +- Never claim GStack 2 is done without the evidence in + [`docs/gstack-2/STATUS.md`](docs/gstack-2/STATUS.md). + +## Platform contract + +Portable means the canonical skill tree follows the Agent Skills specification. +Verified must name its layer. The six-host project/global/selection/removal +matrix is **Verified — installer**; host UI/process execution is still pending. +Native means a necessary host API is covered while consuming the same canonical +judgment. These labels require evidence; see +[`docs/gstack-2/HOST-COMPATIBILITY.md`](docs/gstack-2/HOST-COMPATIBILITY.md). diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 3dba8f3ba..14a054686 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -2,6 +2,82 @@ This document explains **why** gstack is built the way it is. For setup and commands, see CLAUDE.md. For contributing, see CONTRIBUTING.md. +## GStack 2 judgment-layer architecture + +GStack 2 has one canonical Agent Skills tree under `skills/` and exactly six +default-discoverable entry points: `plan`, `design`, `qa`, `debug`, `review`, +and `ship`. The entries are thin dispatchers, not rewritten specialist +prompts. A dispatcher chooses from structured product-stage, surface, +authorization, and evidence signals, prints its execution header, and lazily +loads the full preserved module from `skills//references/legacy/`. + +```text +request + -> one of six public dispatchers + -> explicit mode / depth / mutation / web-context decision + -> preserved specialist module (loaded only when selected) + -> local capability or optional host-neutral runtime, when needed + -> evidence + artifact + unresolved-gate report +``` + +The generated parity corpus pins 55 legacy templates and 16 carved sections +to base `bb57306d98c97011b0919c6132705a15b1579781`. It records source blobs, +normalized render hashes, behavioral contracts, assets, and 16 deliberate +upstream bug-fix overlays. Compatibility aliases contain routing only; they do +not copy judgment. The exhaustive map is +[`docs/gstack-2/SKILL-MIGRATION.md`](docs/gstack-2/SKILL-MIGRATION.md). +The current structural run is green at 4,681 checks. Its deterministic semantic +companion is green at 295 checks across 14 suites, 15 executions, 15 dimensions, +16 carved sections, and nine authority-policy units; retained live-model +samples remain supplemental and are not green release evidence. + +Skill placement is delegated to standards-compatible Agent Skills installers. +The repository does not make host-path detection part of the GStack 2 +architecture. Compatibility is classified as Portable, Verified, or Native; +see [`docs/gstack-2/HOST-COMPATIBILITY.md`](docs/gstack-2/HOST-COMPATIBILITY.md) +for the evidence attached to each tier. + +The current installer-layer matrix passed 470/470 checks for project/global +copies across Claude Code, Codex, Cursor, Pi, OpenClaw, and GitHub Copilot, +including representative selected installs/removals and canonical hashes. Host +UI execution is a separate, still-pending evidence layer. + +Pure judgment requires no shared executable. The optional `gstack` runtime is +host-neutral and uses Node built-ins with human-readable JSON/JSONL state under +`$GSTACK_HOME` or `~/.gstack`. It provides atomic writes, leases/locks, +repository-plus-worktree identity, forward-only migrations, explicit external +effect claims, inspection, cleanup, doctor, upgrade, rollback, and uninstall. +It is a bounded support layer, not a provider marketplace or workflow engine. +The branch's `./setup` entrypoint now installs only this managed runtime: an +allowlisted, hash-validated bundle with atomic activation and stable POSIX/ +Windows launchers. Capability builds use a runtime-only target, `.exe` targets +on Windows, and omit Darwin-only iOS assets on other platforms. The full +macOS lifecycle and a clean Linux arm64 container build/install/uninstall smoke +pass; native Windows execution is still pending. It does not place skills or +detect hosts. + +Context.dev is the only new external service. Network mode and consent both +default off. Only public URLs may cross that boundary; authenticated pages, +private addresses, private DNS resolutions, cookies, repository contents, and +user files are rejected. Search is not fabricated: the current runtime treats +the deprecated general search endpoint as typed unsupported and falls back to +host-native public search, the local browser, or an explicitly unverified +no-web result. See [`docs/gstack-2/CONTEXT-DEV.md`](docs/gstack-2/CONTEXT-DEV.md). +Fallback choice is explicit and persistent through `gstack context select +host|local-browser|none`; these choices do not grant Context.dev consent. + +The existing Chromium browser stays local and remains the only browser +automation backend. The existing physical-iPhone DebugBridge remains the only +iOS backend. PDF and Mermaid/Excalidraw rendering remain internal capabilities. +No cloud browser, cloud iPhone, alternate device driver, ComfyUI, local image +model, generic provider layer, or new state database is part of GStack 2. + +The rest of this document describes retained 1.x subsystem internals. Those +details still govern a preserved module when it invokes that subsystem, but +the 1.x generated multi-host skill surface is not the GStack 2 distribution +architecture. The full 2.0 design and defect disposition are in +[`docs/gstack-2/ARCHITECTURE.md`](docs/gstack-2/ARCHITECTURE.md). + ## The core idea gstack gives Claude Code a persistent browser and a set of opinionated workflow skills. The browser is the hard part — everything else is Markdown. diff --git a/CLAUDE.md b/CLAUDE.md index 984844902..1e1a9c033 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,5 +1,55 @@ # gstack development +## GStack 2 canonical contract + +The public surface is exactly `/plan`, `/design`, `/qa`, `/debug`, `/review`, +and `/ship`. They are lazy dispatchers over the preserved modules under +`skills/*/references/legacy/`; do not rewrite or summarize away the original +question pressure, rubrics, pushback, approval gates, evidence, artifacts, +mutation boundaries, recommendations, or voice. Compatibility files under +`compat/` route old names and contain no judgment. + +`/plan` has exactly six top-level modes: Discovery, Product, Engineering, DX, +Specification, and Full chain. Do not expose its internal aliases as more +top-level modes. + +Canonical install is `npx skills add time-attack/gstack`. Standard installers +own host placement and scope. Do not add host-specific install logic to the 2.0 +path. Pure judgment must work without the optional `bin/gstack` runtime. +The host-neutral `./setup` installs only that managed runtime/capability bundle; +it never owns host skill placement. + +GStack 2 source workflow: + +```bash +bun run gen:gstack2 +bun run test:gstack2 +``` + +The generator owns `skills/*/references/legacy/`, `compat/`, `evals/parity/`, +and the migration/provenance/parity/scenario documents under `docs/gstack-2/`. +Edit `scripts/gstack2/` inputs or the pinned canonical template as appropriate, +then regenerate. Preserve the source-blob and normalized-render evidence. + +The runtime is host-neutral, uses `$GSTACK_HOME` or `~/.gstack`, and keeps state +as locked/atomically written JSON and JSONL. Network mode defaults off. +Context.dev is the only newly authorized external service, may receive only +public URLs after explicit consent, and must use the exact typed failure codes. +`gstack context options` and `context select host|local-browser|none` persist +fallback selection without granting Context.dev consent. +The existing browser stays local. Physical iOS uses only DebugBridge/CoreDevice. +Do not add cloud browsers, alternate iOS drivers, local image models, provider +marketplaces, workflow engines, or a new state database. + +Current completion claims must come from +[`docs/gstack-2/STATUS.md`](docs/gstack-2/STATUS.md) and +[`docs/gstack-2/TEST-EVIDENCE.md`](docs/gstack-2/TEST-EVIDENCE.md). A generated +plan, static keyword test, or narrow green suite is not release evidence. + +The remaining sections describe the retained 1.x development and subsystem +details. They continue to apply when touching those components, but their +multi-host generation/setup path is not the canonical GStack 2 distribution. + ## Commands ```bash @@ -920,39 +970,29 @@ Repeat for each skill: `gstack-openclaw-ceo-review`, `gstack-openclaw-investigat ## Deploying to the active skill -The active skill lives at `~/.claude/skills/gstack/`. After making changes: +The standard Agent Skills installer owns host detection, scope, placement, +updates, and removal. Do not deploy by resetting or copying into a +host-specific skill directory. After a release is published, refresh the +installed skills through the same standard installer used for installation. -1. Push your branch -2. Fetch and reset in the skill directory: `cd ~/.claude/skills/gstack && git fetch origin && git reset --hard origin/main` -3. Rebuild: `cd ~/.claude/skills/gstack && bun run build` - -**If you use gbrain:** the `git reset --hard` in step 2 reverts the brain-aware -(`GBRAIN_CONTEXT_LOAD` / `GBRAIN_SAVE_RESULTS`) blocks that `gstack-config -gbrain-refresh` renders into the install (those generated blocks differ from -`main` by design). After deploying, re-run `gstack-config gbrain-refresh` to -restore them across all your projects' Claude sessions. It's idempotent. - -Or copy the binaries directly: -- `cp browse/dist/browse ~/.claude/skills/gstack/browse/dist/browse` -- `cp design/dist/design ~/.claude/skills/gstack/design/dist/design` +For local development, run `bin/dev-setup`; it links the current worktree and +keeps any brain-aware render in the ignored `.claude/gstack-rendered/` +directory. `gstack-config gbrain-refresh` refreshes managed detection state +only. If that changes generated skill content, rerun the standard Agent Skills +installer rather than mutating an installed host tree in place. ## Skill routing When the user's request matches an available skill, invoke it via the Skill tool. When in doubt, invoke the skill. Key routing rules: -- Product ideas/brainstorming → invoke /office-hours -- Strategy/scope → invoke /plan-ceo-review -- Architecture → invoke /plan-eng-review -- Design system/plan review → invoke /design-consultation or /plan-design-review -- Full review pipeline → invoke /autoplan -- Bugs/errors → invoke /investigate -- QA/testing site behavior → invoke /qa or /qa-only -- Code review/diff check → invoke /review -- Visual polish → invoke /design-review -- Ship/deploy/PR → invoke /ship or /land-and-deploy -- Save progress → invoke /context-save -- Resume context → invoke /context-restore +- Product framing, strategy, scope, architecture, DX, specs, or a full planning pipeline → invoke `/plan` with the preserved specialist mode. +- Design systems, alternatives, coded visual output, plan review, web audit, or HIG audit → invoke `/design`. +- Web/device QA, report-only versus fixes, DX journeys, performance, or canaries → invoke `/qa`. +- Bugs and unknown failures → invoke `/debug`; prove root cause before mutation. +- Diff, security, compatibility, or repository-health review → invoke `/review`. +- PR preparation, landing, deploy, monitoring, release docs, or rollback → invoke `/ship`. +- Old names such as `/office-hours`, `/investigate`, and `/qa-only` route through `compat/README.md`; they are not additional public skills. ## Cross-session decision memory diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b75d4a898..ff7a9292c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,8 +2,100 @@ Thanks for wanting to make gstack better. Whether you're fixing a typo in a skill prompt or building an entirely new workflow, this guide will get you up and running fast. +## GStack 2 contribution contract + +GStack 2 deliberately has six public nouns: `plan`, `design`, `qa`, `debug`, +`review`, and `ship`. Preserve that small surface. A proposal for PM, +accessibility, language, backend, dashboards, sales, or orchestration normally +belongs as a mode, an internal utility, or a community extension—not a seventh +first-party command. + +A contribution must do at least one of the following: + +- improve preserved judgment or the evidence proving it; +- remove duplicated/default surface without deleting behavior; +- fix a linked reproduction and add a regression test; or +- repair bounded infrastructure with one actionable diagnosis and repair + location. + +New public commands, new first-party host adapters, and new external services +require an accepted issue before implementation. External services also +require explicit maintainer approval. Do not add a provider/plugin marketplace, +workflow engine, cloud-browser or cloud-device backend, alternate iOS driver, +database merely for centralization, or local model/runtime download. + +Edit specialist behavior at its canonical legacy template or an explicitly +reviewed bug-fix overlay. Do not hand-edit generated files under +`skills/*/references/legacy/`, `evals/parity/`, `compat/`, or the generated +GStack 2 migration/parity/provenance/scenario docs. Run: + +```bash +bun run gen:gstack2 +bun run test:gstack2 +``` + +Every behavioral change must account for questions, pressure, smart skips, +STOP/approval gates, evidence, artifacts, mutation boundaries, exit behavior, +and voice. “Shorter” is not evidence of parity. Changes to routing need a +structured scenario fixture; changes to an upstream judgment port need a +reproduction-linked regression fixture. + +Install work must test the standard Agent Skills installer, not a new +collection of host paths. Runtime work must preserve no-network-before-consent, +worktree isolation, atomic writes, resumable idempotency, readable state, +failure rollback, and runtime-absent judgment behavior. + +Suggested issue labels (prepare repository automation in a PR, but do not +create labels or mutate GitHub without authorization): + +```text +reproducible-bug +judgment +workflow +context +adapter +community-pack +2.0-port +superseded +needs-evidence +not-core +``` + +Issue templates should ask for: observed versus expected behavior, minimal +reproduction, host/OS/version, evidence or transcript with secrets removed, +root-cause hypothesis if known, affected judgment module, proposed disposition, +and a replacement-test contract. Service/adapter/public-command proposals must +also explain why an existing mode or standards-compatible installer cannot +solve the need. + +The sections below retain the 1.x development workflow where it still applies. +Host-specific generation and dev symlinking are not the canonical GStack 2 +installation path. On this branch, `./setup` installs only the optional managed +runtime; it no longer places host skills or accepts legacy setup flags. + ## Quick start +For GStack 2 source work: + +```bash +git clone https://github.com/time-attack/gstack.git && cd gstack +bun install +bun run gen:gstack2 +bun run test:gstack2 +``` + +Exercise standard installation only in disposable homes/projects. The +repository harness covers the supported matrix without touching operator skill +directories: + +```bash +bun test test/gstack2-installation.test.ts +bun run scripts/gstack2/test-install-matrix.ts --full \ + --output /tmp/gstack2-install-matrix.json +``` + +### Legacy 1.x dev-mode quick start + gstack skills are Markdown files that Claude Code discovers from a `skills/` directory. Normally they live at `~/.claude/skills/gstack/` (your global install). But when you're developing gstack itself, you want Claude Code to use the skills *in your working tree* — so edits take effect instantly without copying or deploying anything. That's what dev mode does. It symlinks your repo into the local `.claude/skills/` directory so Claude Code reads skills straight from your checkout. @@ -259,7 +351,20 @@ Tests run against the browse binary directly — they don't require dev mode. ## Editing SKILL.md files -SKILL.md files are **generated** from `.tmpl` templates. Don't edit the `.md` directly — your changes will be overwritten on the next build. +There are two generation paths. GStack 2 public dispatchers, preserved modules, +compatibility routes, and parity fixtures are generated by `gen:gstack2`; edit +its assignment/route/scenario/overlay inputs or the canonical legacy template, +then regenerate. The older host-specific `SKILL.md` files are generated from +`.tmpl` templates. Do not hand-edit either kind of output. + +For GStack 2: + +```bash +bun run gen:gstack2 +bun run test:gstack2 +``` + +For retained 1.x host output: ```bash # 1. Edit the template @@ -306,9 +411,10 @@ terminology, security jargon, frontend framework concepts). Don't add terms that only appear in one or two niche skills — the cost-to-value trade isn't worth the review overhead. -## Multi-host development +## Legacy 1.x multi-host development -gstack generates SKILL.md files for 8 hosts from one set of `.tmpl` templates. +This section documents compatibility output, not canonical GStack 2 +installation. GStack 1.x generates SKILL.md files for 8 hosts from one set of `.tmpl` templates. Each host is a typed config in `hosts/*.ts`. The generator reads these configs to produce host-appropriate output (different frontmatter, paths, tool names). @@ -357,7 +463,9 @@ bun run skill:check ### Adding a new host -See [docs/ADDING_A_HOST.md](docs/ADDING_A_HOST.md) for the full guide. Short version: +GStack 2 first-party host adapters require an accepted issue and proof that the +standard portable tree is insufficient. The guide below applies only to the +legacy generator: see [docs/ADDING_A_HOST.md](docs/ADDING_A_HOST.md). 1. Create `hosts/myhost.ts` (copy from `hosts/opencode.ts`) 2. Add to `hosts/index.ts` @@ -369,7 +477,9 @@ Zero generator, setup, or tooling code changes needed. ### Adding a new skill -When you add a new skill template, all hosts get it automatically: +Do not add a seventh GStack 2 public skill without an accepted issue. Prefer a +mode, internal module, or community extension. For a legacy compatibility +template, all legacy host outputs are generated automatically: 1. Create `{skill}/SKILL.md.tmpl` 2. Run `bun run gen:skill-docs --host all` 3. The dynamic template discovery picks it up, no static list to update @@ -377,6 +487,13 @@ When you add a new skill template, all hosts get it automatically: ## Conductor workspaces +The 1.x `bin/dev-setup` path below still passes host-placement and hook flags to +`./setup`; the GStack 2 runtime-only wrapper intentionally rejects them. Treat +this integration as pending migration, not a working 2.0 install path. Use the +source commands and isolated installer harness above for current 2.0 work. + +### Historical 1.x behavior + If you're using [Conductor](https://conductor.build) to run multiple Claude Code sessions in parallel, `conductor.json` wires up workspace lifecycle automatically: | Hook | Script | What it does | @@ -485,7 +602,7 @@ When community PRs accumulate, batch them into themed waves: 5. **Ship as one PR** — single PR to main with all attributions preserved in merge commits. Include a summary table of what merged and what closed. -See [PR #205](../../pull/205) (v0.8.3) for the first wave as an example. +See [PR #205](https://github.com/garrytan/gstack/pull/205) (v0.8.3) for the first wave as an example. ## Upgrade migrations diff --git a/README.md b/README.md index b25b289c7..1cd547de3 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,74 @@ # gstack +> **GStack 2.0 is under verification on `codex/gstack-2`.** It is not a +> released 2.0 until every gate in +> [`docs/gstack-2/STATUS.md`](docs/gstack-2/STATUS.md) passes. The material +> below the GStack 2 quick start remains useful background, but host-specific +> `./setup` instructions and the many-command catalog describe the 1.x +> compatibility surface. + +GStack 2 presents one engineering judgment layer through exactly six public +skills: + +| Skill | Start here when… | +|---|---| +| `/plan` | The product, scope, architecture, DX, or specification is unsettled. | +| `/design` | You need a visual direction, alternatives, implementation, or design audit. | +| `/qa` | You need report-only or fix-and-verify evidence from the local browser or a physical iPhone. | +| `/debug` | A failure needs root-cause proof before a fix. | +| `/review` | A diff or repository needs correctness, security, compatibility, or health review. | +| `/ship` | A change is ready for PR preparation, landing, deployment, monitoring, or documentation. | + +`/plan` has exactly six top-level modes: **Discovery, Product, Engineering, +DX, Specification, and Full chain**. The other dispatchers refine their small +public mode set into the preserved specialist modules only after selection. + +The specialist judgment was not flattened into six generic prompts. Each +dispatcher states its mode, depth, mutation boundary, active and skipped +modules, and web-context choice, then lazily reads the preserved specialist +module. See the complete [old-command mapping](docs/gstack-2/SKILL-MIGRATION.md) +and [architecture](docs/gstack-2/ARCHITECTURE.md). + +## GStack 2 quick start — under five minutes + +Install with the standard Agent Skills installer; it owns host detection, +scope, destination paths, updates, removal, and selected-skill installation: + +```bash +npx skills add time-attack/gstack +``` + +That installs the six judgment skills. Install a subset with the installer's +`--skill` option, or use `-g` for its global scope. GStack does not silently +enroll detected hosts. + +The candidate installer matrix passes project/global placement for Claude +Code, Codex, Cursor, Pi, OpenClaw, and GitHub Copilot. This verifies files and +canonical hashes; host UI execution remains a separate release gate. + +Start with `/plan`, or invoke the skill syntax your host displays. Pure +judgment modes work without a shared executable. Capability-dependent modes +may offer the optional, host-neutral runtime. From a repository checkout, +`./setup` installs that runtime once per user without placing host skills. Its +real default-capability lifecycle passes on macOS, and a clean Linux arm64 Dev +Container install/build/uninstall smoke also passes. Native-host Linux and +Windows remain release gates, so consult +[`HOST-COMPATIBILITY.md`](docs/gstack-2/HOST-COMPATIBILITY.md) before relying on +it. + +Public web research is optional. Context.dev is the only new external service, +is disabled until explicit consent, and may receive only public URLs. If it is +not configured, choose host-native public search, GStack's local browser, or no +web research with `gstack context select host|local-browser|none`. The browser +remains local; no cloud-browser backend was added. +See [Context.dev setup](docs/gstack-2/CONTEXT-DEV.md) and the +[privacy boundary](docs/gstack-2/PRIVACY.md). + +Compatibility is reported as **Portable**, **Verified**, or **Native**; these +terms are evidence levels, not marketing synonyms. Current verified-platform +results are recorded in +[`TEST-EVIDENCE.md`](docs/gstack-2/TEST-EVIDENCE.md). + > "I don't think I've typed like a line of code probably since December, basically, which is an extremely large change." — [Andrej Karpathy](https://fortune.com/2026/03/21/andrej-karpathy-openai-cofounder-ai-agents-coding-state-of-psychosis-openclaw/), No Priors podcast, March 2026 When I heard Karpathy say this, I wanted to find out how. How does one person ship like a team of twenty? Peter Steinberger built [OpenClaw](https://github.com/openclaw/openclaw) — 247K GitHub stars — essentially solo with AI agents. The revolution is here. A single builder with the right tooling can move faster than a traditional team. @@ -20,7 +89,7 @@ I'm [Garry Tan](https://x.com/garrytan), President & CEO of [Y Combinator](https Same person. Different era. The difference is the tooling. -**gstack is how I do it.** It turns Claude Code into a virtual engineering team — a CEO who rethinks the product, an eng manager who locks architecture, a designer who catches AI slop, a reviewer who finds production bugs, a QA lead who opens a real browser, a security officer who runs OWASP + STRIDE audits, and a release engineer who ships the PR. Twenty-three specialists and eight power tools, all slash commands, all Markdown, all free, MIT license. +**gstack is how I do it.** It turns an AI coding host into a virtual engineering team — a CEO who rethinks the product, an eng manager who locks architecture, a designer who catches AI slop, a reviewer who finds production bugs, a QA lead who opens a real browser, a security officer who runs OWASP + STRIDE audits, and a release engineer who ships the PR. In GStack 2 those preserved specialists sit behind six lazy dispatchers rather than dozens of default commands. It remains MIT licensed. This is my open source software factory. I use it every day. I'm sharing it because these tools should be available to everyone. @@ -31,7 +100,7 @@ Fork it. Improve it. Make it yours. And if you want to hate on free open source - **First-time Claude Code users** — structured roles instead of a blank prompt - **Tech leads and staff engineers** — rigorous review, QA, and release automation on every PR -## Quick start +## Legacy 1.x workflow example 1. Install gstack (30 seconds — see below) 2. Run `/office-hours` — describe what you're building @@ -40,7 +109,13 @@ Fork it. Improve it. Make it yours. And if you want to hate on free open source 5. Run `/qa` on your staging URL 6. Stop there. You'll know if this is for you. -## Install — 30 seconds +## Legacy 1.x host-specific install (compatibility only) + +Do not use this section for a new GStack 2 install. Use +`npx skills add time-attack/gstack` above. These instructions remain while old +commands are documented as opt-in aliases. They describe a 1.x release/tag: +the current branch's `./setup` is runtime-only and will not perform the +host-specific actions shown below. **Requirements:** [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Git](https://git-scm.com/), [Bun](https://bun.sh/) v1.0+, [Node.js](https://nodejs.org/) (Windows only) @@ -317,7 +392,25 @@ right skill activates. You don't need to remember slash command names or acronym ## Uninstall -### Option 1: Run the uninstall script +For GStack 2, remove skills through the same standard installer that placed +them. Confirm the agent/scope with `npx skills remove --help`; a noninteractive +selected removal has this shape: + +```bash +npx skills remove --skill plan design qa debug review ship \ + --agent --yes +``` + +Remove managed runtime versions separately while preserving configuration and +project history: + +```bash +~/.gstack/bin/gstack uninstall +``` + +The options below are the legacy 1.x uninstall flow. + +### Legacy option 1: Run the uninstall script If gstack is installed on your machine: @@ -327,7 +420,7 @@ If gstack is installed on your machine: This handles skills, symlinks, global state (`~/.gstack/`), project-local state, browse daemons, and temp files. Use `--keep-state` to preserve config and analytics. Use `--force` to skip confirmation. -### Option 2: Manual removal (no local repo) +### Legacy option 2: Manual removal (no local repo) If you don't have the repo cloned (e.g. you installed via a Claude Code paste and later deleted the clone): @@ -430,6 +523,12 @@ Other references: [docs/gbrain-sync.md](docs/gbrain-sync.md) (sync-specific guid | Doc | What it covers | |-----|---------------| +| [GStack 2 status](docs/gstack-2/STATUS.md) | Release gates, blockers, and evidence links; the authoritative completion state | +| [GStack 2 architecture](docs/gstack-2/ARCHITECTURE.md) | Six-skill judgment layer, lazy modules, runtime, browser, iOS, and Context.dev boundaries | +| [GStack 2 host compatibility](docs/gstack-2/HOST-COMPATIBILITY.md) | Portable / Verified / Native definitions and install matrix | +| [GStack 2 semantic parity](docs/gstack-2/SEMANTIC-PARITY.md) | Deterministic primary evidence and the non-green supplemental live-model samples | +| [GStack 2 upgrade and rollback](docs/gstack-2/UPGRADE-AND-ROLLBACK.md) | Atomic runtime upgrades, rollback, and 1.x alias migration | +| [GStack 2 physical iPhone](docs/gstack-2/IOS-PHYSICAL-DEVICE.md) | DebugBridge preflight, signing/provisioning recovery, safe install, and five-check live evidence | | [Skill Deep Dives](docs/skills.md) | Philosophy, examples, and workflow for every skill (includes Greptile integration) | | [Diagrams & Document Formats](docs/howto-diagrams-and-formats.md) | Mermaid/excalidraw fences in PDFs, image sizing and safety defaults, `--to html\|docx`, `/diagram` triplets | | [Builder Ethos](ETHOS.md) | Builder philosophy: Boil the Ocean, Search Before Building, three layers of knowledge | @@ -442,14 +541,20 @@ Other references: [docs/gbrain-sync.md](docs/gbrain-sync.md) (sync-specific guid ## Privacy & Telemetry -gstack includes **opt-in** usage telemetry to help improve the project. Here's exactly what happens: +GStack 2's runtime starts with network mode **off**. It performs no Context.dev +DNS lookup or request until both the Context mode and consent flag have been +persisted. It rejects local, private, credential-bearing, and private-resolving +URLs before a Context.dev fetch. See +[`docs/gstack-2/PRIVACY.md`](docs/gstack-2/PRIVACY.md) for the full boundary. + +The retained 1.x compatibility tooling includes **opt-in** usage telemetry: - **Default is off.** Nothing is sent anywhere unless you explicitly say yes. - **On first run,** gstack asks if you want to share anonymous usage data. You can say no. - **What's sent (if you opt in):** skill name, duration, success/fail, gstack version, OS. That's it. - **What's never sent:** code, file paths, repo names, branch names, prompts, or any user-generated content. - **Change anytime:** `gstack-config set telemetry off` disables everything instantly. -- **Update checks:** Once per hour, gstack fetches the current version number from `raw.githubusercontent.com` to check for upgrades. This is a plain GET request — no auth, no payload — but it does reach GitHub's servers regardless of your telemetry setting. Set `update_check: false` in `~/.gstack/config.yaml` to disable it entirely. +- **Legacy update checks:** 1.x can fetch the current version number from `raw.githubusercontent.com`. Set `update_check: false` in `~/.gstack/config.yaml` to disable this legacy path. It is not the GStack 2 runtime's default behavior. Data is stored in [Supabase](https://supabase.com) (open source Firebase alternative). The schema is in [`supabase/migrations/`](supabase/migrations/) — you can verify exactly what's collected. The Supabase publishable key in the repo is a public key (like a Firebase API key) — row-level security policies deny all direct access. Telemetry flows through validated edge functions that enforce schema checks, event type allowlists, and field length limits. @@ -457,6 +562,11 @@ Data is stored in [Supabase](https://supabase.com) (open source Firebase alterna ## Troubleshooting +For GStack 2, first run `gstack doctor` (or `gstack doctor --json`) when the +optional runtime is installed. For skill discovery problems, use the standard +installer's list and reinstall commands; do not manually copy host paths. The +entries below apply to legacy 1.x installations. + **Skill not showing up?** `cd ~/.claude/skills/gstack && ./setup` **`/browse` fails?** `cd ~/.claude/skills/gstack && bun install && bun run build` diff --git a/docs/gbrain-write-surfaces.md b/docs/gbrain-write-surfaces.md index 7d84734b1..22a496ff3 100644 --- a/docs/gbrain-write-surfaces.md +++ b/docs/gbrain-write-surfaces.md @@ -13,7 +13,7 @@ This doc serves two audiences: | Host + detection state | What renders in the planning-skill SKILL.md | |---|---| -| Any host + `gstack-config gbrain-refresh` reports `gbrain_local_status: "ok"` | Compressed brain-aware blocks render. Agent reads this doc on-demand when it actually saves. ~250 token overhead per planning skill. | +| Any host + `gstack-config gbrain-refresh` reports `gbrain_local_status: "ok"` | Managed detection state is refreshed. Rerun the standard Agent Skills installer if that state must change installed skill content; GStack does not rewrite a host tree in place. | | Any host + gbrain not detected | Blocks suppressed at gen-time. Zero token overhead. Calibration takes still render (separate resolver, host-agnostic). | | GBrain or Hermes host | Blocks always render regardless of detection — these hosts ship gbrain integration as a first-class concern. | diff --git a/docs/gstack-2/ARCHITECTURE.md b/docs/gstack-2/ARCHITECTURE.md new file mode 100644 index 000000000..04ef9ebdb --- /dev/null +++ b/docs/gstack-2/ARCHITECTURE.md @@ -0,0 +1,266 @@ +# GStack 2 architecture + +Status: implemented in the candidate branch, with release evidence still +pending. This document describes the candidate; it is not a 2.0 release claim. +The authoritative gate state is [STATUS.md](./STATUS.md). + +## Product boundary + +GStack 2 is an engineering judgment layer with exactly six public skills: + +```text +plan -> design -> qa -> debug -> review -> ship +``` + +This is a navigation surface, not a linear workflow and not a compression of +specialists into generic prompts. Each dispatcher selects a mode from +structured stage, surface, artifact, mutation-authority, evidence, and deploy +signals. It prints the target, mode, depth, mutation boundary, active modules, +skipped modules, and web-context choice before work. It then loads only the +selected preserved module. + +The canonical tree is: + +```text +skills/ + plan|design|qa|debug|review|ship/ + SKILL.md thin dispatcher + agents/openai.yaml optional host presentation metadata + references/ + legacy/*.md lazily loaded preserved specialists + ASSETS.md relocated-asset index + COMPATIBILITY.md old-name routes within this tree + assets/ copied assets with pinned blob evidence +compat/*.md internal aliases, never default skills +evals/parity/ contracts, scenarios, regressions, manifest +``` + +`scripts/gstack2/generate-skill-tree.ts` mechanically renders 55 pinned legacy +modules, inlines 16 carved sections, and carries 78 assets. The generator +records source Git blob IDs and normalized render hashes. It adds only reviewed +upstream bug-fix overlays, each with a PR link, stable anchor, and regression fixture. The parity +runner checks nine behavioral dimensions: question order, pressure, smart +skips, STOP/approval gates, evidence, artifacts, mutation, exit behavior, and +voice. + +The public dispatcher cannot substitute for its selected module. Its +completeness invariant explicitly requires reading that module in full. See +[JUDGMENT-PROVENANCE.json](./JUDGMENT-PROVENANCE.json), +[JUDGMENT-PARITY.md](./JUDGMENT-PARITY.md), and +[SKILL-MIGRATION.md](./SKILL-MIGRATION.md). + +The reproducible semantic layer adds 295 checks across 14 suites, 15 +executions, 15 dimensions, 16 sections, and nine authority-policy unit cases. +Exact source preservation remains the primary oracle. These are deterministic +policy checks, not behavioral-adversarial proof. Paid live-model comparisons +are supplemental; the currently retained semantic samples are regressions and +do not support a release-pass claim. + +The separate installed-host adversarial lane also has no passing live result: +v1 failed; immutable v2 failed despite QA passing because its classifier +produced false negatives for debug, review, and ship; and v3 has 18 pass / 0 +fail / 111 assertions offline but has not run live and has no artifact. See the +[installed-host evidence overview](../../evals/host-adversarial/README.md). + +## Specialist modes + +The primary modes are summarized here; internal compatibility modes are in the +migration map. + +| Skill | Public top-level modes and preserved refinements | +|---|---| +| `/plan` | exactly **Discovery, Product, Engineering, DX, Specification, Full chain**, refined to office-hours, CEO, engineering, DX, spec, or autoplan judgment | +| `/design` | **Explore, Generate, Critique, Implement**, refined to consultation, alternatives, HTML/CSS, plan/live review, physical-iOS HIG, diagram, or PDF | +| `/qa` | **Report** or **Fix**, refined by web, physical-iOS, DX, performance, or canary surface | +| `/debug` | **Diagnose-only** or **Fix**, refined to general investigation or the physical-iOS fix loop | +| `/review` | **Normal, Security, Performance, Deep**, with health and genuinely independent outside voices selected only when applicable | +| `/ship` | **Prepare, Land, Deploy, Monitor, Resume**, refined to PR, queue, docs, deploy setup, land/deploy, canary, or context restoration modules | + +Old commands are opt-in aliases for the compatibility window. An alias points +to one exact module, prints the replacement invocation, and carries no copied +judgment. This prevents an alias from drifting away from the canonical source. + +## Installation boundary + +The standard Agent Skills tree is the unit of distribution: + +```bash +npx skills add time-attack/gstack +``` + +The installer—not GStack—owns host detection, project/global scope, destination +paths, selected-skill installation, copies versus symlinks, updates, and +removal. GStack does not silently enroll a detected host. The former +host-placement behavior of `./setup` and ten-host generated trees is historical +compatibility/development machinery, not the 2.0 installation architecture; +the current `./setup` installs only the optional runtime described below. + +The standards installer matrix passed 470/470 checks with CLI 1.5.19. It +verified project/global copies for Claude Code, Codex, Cursor, Pi, OpenClaw, and +GitHub Copilot plus selected-skill and opt-in compatibility-alias cases, +removal, spaces, source symlink, copy mode, and canonical hashes across 16 +installs and two removals. The committed artifact is +[`evals/installation/install-matrix.json`](../../evals/installation/install-matrix.json). +This is installer-layer verification; it is Markdown-only placement and does +not prove a passing live installed-host judgment run. + +Pure judgment is Markdown and works when the optional runtime is absent. A +capability-dependent module performs one runtime check and must degrade with an +actionable setup choice rather than make the six skills undiscoverable. + +## Optional host-neutral runtime + +`bin/gstack` calls a Node-built-ins runtime under `runtime/`. It does not own +skill placement and is installed once per user, not once per host. The +host-neutral `./setup` wrapper installs only this runtime/capability bundle. It +stages an explicit allowlist, rejects internal symlinks/path escapes, +hash-validates files, smoke-tests the CLI, atomically activates the version, +and writes stable POSIX/Windows launchers plus an uninstall manifest under +`$GSTACK_HOME`. Runtime capability builds use a dedicated target that does not +regenerate skills or require repository history; Windows targets use `.exe` +suffixes and Darwin-only iOS artifacts are omitted elsewhere. Its public +operations are setup, doctor, config, state +inspection/resume, Context.dev status/options/select/setup/smoke, cleanup, +upgrade/rollback, and uninstall. + +The current managed-bundle audit records 107 components, 1,830 files, +459,056,031 bytes, and 50 launchers. Setup installs frozen production-only +dependencies; the development-only Claude Agent SDK is excluded. The +Sharp/ngrok dependency closure is included. The Hugging Face sidecar is +excluded and its package is development-only, so setup installs neither its +inference runtime nor model weights and reports the L4 capability unavailable. + +A clean Linux arm64 runtime smoke installed only production dependencies with +the development SDK absent, completed a local-browser journey and Sharp +full-page screenshot, and uninstalled while preserving state. This is Linux +container evidence, not native Windows evidence. + +The authoritative root is `$GSTACK_HOME` or `~/.gstack`; host-specific variables +do not redirect it. Paths are passed as values and never emitted for shell +evaluation. The state shape is human-readable: + +```text +~/.gstack/ + config.json + secrets.json mode 0600 where supported + migration.json + locks/ + tmp/ + versions/current.json + projects// + state.json + timeline.jsonl + decisions.jsonl + evidence/ + artifacts/ + reviews/ + checkpoints/ +``` + +Repository identity is shared across linked worktrees; worktree identity is +stable and distinct. Their combination selects project state, preventing one +worktree from resuming another's run. Updates use atomic replace plus lock +leases. External actions are durably claimed before execution. A process death +after a claim marks the action uncertain on resume and refuses automatic +repetition until explicitly reconciled. + +Migrations are forward-only and idempotent. Runtime upgrades copy into a staged +version, verify, switch an atomic pointer, and retain the last known good +version. A failed health check or interrupted pending pointer restores the +previous active version. This is bounded release plumbing, not a distributed +workflow engine. + +## Context.dev boundary + +Context.dev is the only new external service and handles only public web +content. `network.mode` and `network.consent` both start off. The client checks +both before DNS or fetch. It rejects credentials in URLs, localhost, local and +private names, private/link-local IP literals, cloud-metadata targets, and a +public hostname that resolves to a private address. + +Supported candidate operations use the documented scrape-Markdown, +scrape-HTML, crawl, sitemap, and screenshot endpoints. The current general +search endpoint is deprecated, so `search()` returns a typed unsupported error +without a network request. A workflow must instead use an explicitly selected +host-native public search, the local browser, or no web research and label the +result unverified. It must not invent a replacement API. + +`gstack context options` presents those choices. `gstack context select +host|local-browser|none` persists the explicit fallback while keeping +Context.dev consent false; `context setup` is the only path that selects +Context.dev and persists export consent with the protected key. + +The deterministic Context contract is green at 22 pass / 0 fail and 139 +assertions. No verified key was available for a live provider smoke, so provider +behavior remains blocked rather than inferred from the contract suite. + +See [CONTEXT-DEV.md](./CONTEXT-DEV.md) and [PRIVACY.md](./PRIVACY.md). + +## Local browser and physical iOS + +The existing Chromium/Playwright daemon remains the sole browser-automation +backend. It binds loopback, requires bearer authorization for mutations, +preserves authenticated sessions locally, denies tunnel commands by default, +and treats page/console/network content as untrusted. Context.dev complements +public research; it does not replace browser QA. No cloud browser was added. + +The existing DebugBridge/CoreDevice harness remains the sole physical-iOS +backend. The candidate distinguishes hardware UDID from CoreDevice UUID, +returns bounded 504 responses for a suspended app, asserts the expected bundle +around coordinate mutations, preserves typed snapshot/mutation/restoration, +and keeps bridge symbols debug-only. Device signing and provisioning are +remediable setup gates, not product failures. A live signed-device pass is +still required before release. Current preflight evidence is 9 pass / 0 fail / +1 deploy skip and 29 assertions. The direct smoke returned +`signing_unavailable` / `setup_gate`; no app was installed and no pass artifact +was written. + +PDF rendering and Mermaid/Excalidraw remain internal capabilities. GStack does +not add Typst, hosted document rendering, alternate diagram services, local +image weights, ComfyUI, or a GPU runtime. + +## Infrastructure-defect disposition + +“Contained” means the defect is outside the canonical GStack 2 path, not that +legacy code was proven bug-free. “Implemented” names candidate code. “Pending” +means the replacement still lacks its required release evidence. + +| # | Legacy defect | GStack 2 disposition / replacement | Replacement evidence | +|---:|---|---|---| +| 1 | Ten registered hosts; setup fully installs five | **Contained:** placement is delegated to the standard installer. | 470/470 checks across six hosts, 16 installs, two removals, project/global scopes, and selections. Passing live v3/host UI launch remains separate. | +| 2 | Kiro rewrites Codex output | **Contained:** one canonical standards tree; no Kiro rewrite in the 2.0 path. | Six-host matrix installs byte-matching canonical copies without host rewrites. | +| 3 | Gitignored external trees defeat freshness CI | **Implemented:** canonical `skills/`, `compat/`, and parity fixtures are committed. | 4,681 parity checks plus installed-file hash equality. | +| 4 | External `--dry-run` mutates files | **Contained:** external host generation/dry-run is not used for 2.0 distribution. | Canonical regeneration/parity check exists; a non-mutating canonical check mode is not yet present. | +| 5 | Single-host generation failures only warn | **Contained:** no per-host generation in the canonical path; canonical generation throws on failure. | Generator/parity suite and final build rerun are green. | +| 6 | Setup continues after failed generation | **Implemented/contained:** standard installer handles skills; runtime setup fails before activation and preserves last known good. | Failure tests plus the real two-version default lifecycle and rollback pass. | +| 7 | Removed/renamed generated skills are not pruned | **Implemented for canonical references:** regeneration removes each reference/asset tree and parity corpus before writing the fixed six. | Parity inventory test; stale-public-directory fixture pending. | +| 8 | Freshness misses generator/design/PDF changes | **Implemented:** build invokes canonical generation; parity hashes source, sections, assets, and fixtures. | Design is green at 101/0/381, PDF at 189/0/398, and the uninterrupted broad singleton run is green across all 383 files. | +| 9 | State paths bypass canonical resolver | **Implemented:** `runtime/paths.js` is authoritative for 2.0 runtime state. | `gstack2-runtime-core.test.ts`. | +| 10 | Shell-evaluated path assignments are unsafe | **Implemented:** runtime paths are JavaScript values; shell-looking input remains literal. | Core test covers spaces, `$()`, semicolon, and `$HOME` text. | +| 11 | Relinking omits carved section links | **Contained:** no per-section host relinking; sections are inlined into pinned modules. | Parity checks all 16 sections. | +| 12 | External preambles omit PDF paths | **Contained:** PDF is indexed as an internal design capability/assets route, not copied host preamble prose. | Asset parity plus 189/0/398 PDF strict tests and a visually checked four-page live render pass. | +| 13 | Production model benchmark imports test helpers | **Implemented:** the runner, pricing, providers, and optional judge live under `lib/model-benchmark/`; the production CLI imports only production modules. | `benchmark-production-boundary.test.ts` rejects imports from `test/` across `bin/` and `lib/`; focused runner and CLI tests exercise the relocated implementation. | +| 14 | Default tests omit `design/test` | **Implemented:** package default and free-test roots include `design/test`. | Design is green at 101/0/381 and is included in the uninterrupted 383-file broad pass. | +| 15 | Default tests omit `ios-qa/daemon/test` | **Implemented:** package default and free-test roots include the daemon tests. | Focused daemon run: 95 pass / 0 fail / 229 assertions; daemon tests are also included in the uninterrupted broad pass. | +| 16 | Host setup contradicts config-driven claim | **Contained:** host setup is no longer a 2.0 responsibility. | Standard installer CLI 1.5.19 passed all six configured host targets. | +| 17 | Host-generated judgment copies drift | **Implemented:** one canonical module corpus with source-blob/render hashes. | 4,681 parity checks and installed-copy hashes pass. | +| 18 | Updating one host leaves another stale | **Contained:** one tree is installed by each host's standard installer. | Project/global copies across six hosts matched canonical hashes; remote update flow remains installer-owned. | +| 19 | State identity crosses worktrees | **Implemented:** repo plus stable worktree identity selects state. | Linked-worktree core test passes. | +| 20 | Partial ship failures are not reliably idempotent | **Implemented at runtime primitive:** claimed effects become uncertain and are not automatically repeated. | Crash/resume and completed-effect tests pass. End-to-end ship resume remains pending. | +| 21 | Parser failures become empty success | **Implemented in iOS device discovery:** parse/tool failures are typed errors. | `tunnel-bootstrap.test.ts` malformed-JSON regression passes in the focused daemon suite. | +| 22 | Setup failures become product failures | **Partly implemented:** iOS discovery/setup categories and runtime doctor return actionable setup state. | Automated categories exist; live signing/provisioning gate pending. | +| 23 | Runtime network activity is not obvious | **Implemented for Context runtime:** selection, mode, and consent are explicit; status/doctor report them; zero lookup/fetch before Context selection+consent. | Context contract: 22 pass / 0 fail / 139 assertions, including persisted non-export fallbacks. Verified-key live smoke remains blocked. | +| 24 | Context restore selects another worktree | **Implemented for canonical state resume:** current repo+worktree project ID scopes inspection/resume. | Linked-worktree identity test passes; compatibility end-to-end restore test pending. | +| 25 | Preambles repeat large sections in every skill | **Implemented structurally:** six thin lazy dispatchers share infrastructure and load one preserved module on demand. | Current generated six-name/description catalog is 982 characters, about 246 token-equivalents versus the correctly parsed baseline of about 1,100 (77.6% lower). Re-measure if frontmatter changes. | + +No defect in this table should be closed from prose alone. The final claim must +link its reproduction and passing test in [TEST-EVIDENCE.md](./TEST-EVIDENCE.md). + +## Explicit non-architecture + +GStack 2 does not contain a generic provider or plugin marketplace, distributed +workflow engine, mandatory cloud service, cloud browser/device farm, +Browserbase/Browser Use/Agent Device/Appium/XCUITest driver layer, mandatory +telemetry, mandatory GBrain/Docker/image generation, local model weights, +ComfyUI, or a new runtime database. Existing development-only dependencies are +not promoted into user setup or the GStack 2 architecture. diff --git a/docs/gstack-2/CONTEXT-DEV.md b/docs/gstack-2/CONTEXT-DEV.md new file mode 100644 index 000000000..901b9a06c --- /dev/null +++ b/docs/gstack-2/CONTEXT-DEV.md @@ -0,0 +1,162 @@ +# Context.dev setup and operation + +Context.dev is the only newly authorized external service in GStack 2. It is +optional and restricted to public web context. The current automated contract +is green at 22 pass / 0 fail and 139 assertions. No verified account key was +available, so the live smoke has not run and provider behavior remains +unverified; see [TEST-EVIDENCE.md](./TEST-EVIDENCE.md). + +## Choose a public-web mode + +When a workflow needs public research and no choice is stored, it must offer: + +```text +A) Set up Context.dev free (recommended) +B) Use this host's built-in public web search, if available +C) Use GStack's local browser +D) Continue without web research +``` + +Declining Context.dev is not a workflow failure. Persist only the explicit +choice. Never infer consent from a previous browser navigation, host login, +environment variable, or legacy configuration. + +The runtime exposes the same choice without requiring a prompt: + +```bash +gstack context options +gstack context select host +gstack context select local-browser +gstack context select none +``` + +`select` persists exactly one choice in `config.json`. The three fallback +choices keep `network.consent` false and never configure Context.dev export. +`context status` reports the stored selection. If `$GSTACK_HOME/bin` is not on +`PATH`, invoke the default launcher as `~/.gstack/bin/gstack`. + +## Free-tier caveat + +Provider limits can change. At the 2026-07-16 implementation check, the +[Context.dev pricing page](https://www.context.dev/pricing) described 500 +monthly credits for a work-email signup, 250 for a personal/free-email signup, +no credit card, and ordinary page scraping at one credit. Email verification +is required, and provider responses for unverified or exhausted accounts may +not use intuitive HTTP status codes. Verify current terms before promising a +quota or cost; GStack maps the response body as well as status. + +GStack never opts into paid usage or surprise spending. When credits are +exhausted it explains the condition and offers a fallback. + +## Setup + +1. Open [Context.dev agent authentication](https://www.context.dev/auth.md) or + [signup](https://www.context.dev/signup). +2. Create the account and complete email verification. +3. Install the optional host-neutral runtime if the active mode needs it. +4. Review the options, then run the interactive Context.dev setup: + + ```bash + gstack context options + gstack context setup + ``` + +5. Read the egress prompt. Type `yes` only if public-page requests to + Context.dev are acceptable. +6. Enter the API key at the hidden prompt. Do not paste it into chat, a command + argument, shell history, a project `.env`, or repository file. +7. Check status: + + ```bash + gstack context status + gstack doctor + ``` + +8. Run one public-page smoke test: + + ```bash + gstack context smoke --url https://www.context.dev + ``` + +For a non-interactive controlled environment, `--consent` is required and the +key must come from protected stdin or `CONTEXT_DEV_API_KEY`; the CLI rejects +key-looking command-line arguments. Interactive hidden input is preferred. + +The runtime stores the explicit selection and public choices in +`~/.gstack/config.json` and the key in +`~/.gstack/secrets.json`, mode `0600` where the platform supports POSIX modes. +`$GSTACK_HOME` changes that root. Secrets cannot be written through +`gstack config set`. + +## Data-egress contract + +Context.dev may receive only the public target URL and operation parameters +needed for the selected scrape/crawl/sitemap/screenshot operation. It must not +receive: + +- authenticated pages or private dashboards; +- localhost, intranet, local/private/link-local addresses, or cloud metadata; +- a public hostname whose DNS result is non-public; +- URLs containing usernames or passwords; +- private repository content, diffs, prompts, or user files; +- cookies, session tokens, browser profiles, or unrelated credentials. + +The client validates the lexical URL and DNS resolution before a provider +request. `network.mode` must equal `context` and `network.consent` must be true +before it performs even the DNS lookup. The base endpoint is locked to the +credential-free official `https://api.context.dev/v1` origin. + +This is not permission to upload public-looking content from an authenticated +session. If provenance is ambiguous, use the local browser and keep the data on +the machine. + +## Supported operations and search + +The candidate client implements the documented public scrape-Markdown, +scrape-HTML, crawl, sitemap, and screenshot calls. General Context.dev search +is currently deprecated by the provider: the official +[Context.dev changelog](https://docs.context.dev/changelog) says the endpoint +returns `410 Gone`. The current pricing page still lists Web Search credit +costs, so the public provider pages conflict. The runtime follows the explicit +deprecation notice and returns a typed unsupported `CONTEXT_BAD_RESPONSE` +without a network call; it does not guess an endpoint or claim search evidence. + +For public search, use the host-native facility only when the user selects it +and it is available. Otherwise use the local browser. If neither is appropriate, +continue without web research and label conclusions unverified. + +## Exact failure taxonomy + +| Code | Meaning | Recovery | +|---|---|---| +| `CONTEXT_KEY_MISSING` | No key is available. | Offer setup, host-native public search, local browser, or no-web continuation. | +| `CONTEXT_KEY_INVALID` | Key format or provider authentication failed. | Re-enter/reissue the key; never print it. | +| `CONTEXT_EMAIL_UNVERIFIED` | Provider account needs email verification. | Ask the user to verify, then retry the smoke test. | +| `CONTEXT_CREDITS_EXHAUSTED` | Free/paid allowance is depleted. | Explain the quota and offer fallbacks; never purchase automatically. | +| `CONTEXT_RATE_LIMITED` | Provider is throttling requests. | Honor `Retry-After` or fall back; avoid a retry storm. | +| `CONTEXT_TIMEOUT` | Request reached its bounded timeout. | Retry only when safe, or use local/host-native context. | +| `CONTEXT_BLOCKED` | URL/privacy policy rejected the target or provider could not access it safely. | Do not weaken the private-data gate; use local browser when appropriate. | +| `CONTEXT_BAD_RESPONSE` | Provider/server/schema error or an explicitly unsupported operation. | Preserve details without secrets; use a fallback. | + +Do not collapse these into “401” or “Context.dev failed.” + +## Disable or rotate + +Disable network use without deleting the stored key: + +```bash +gstack context select none +``` + +This persists selection `none`, mode `off`, and consent `false`. + +Run `gstack context setup` again to replace a rotated key. To remove all runtime +state including secrets, use the separately confirmed destructive operation: + +```bash +gstack uninstall --purge --yes +``` + +Standard skill installation and pure judgment do not require a Context.dev +account. The 22-test deterministic contract is not a substitute for the +blocked verified-key live smoke. diff --git a/docs/gstack-2/HOST-COMPATIBILITY.md b/docs/gstack-2/HOST-COMPATIBILITY.md new file mode 100644 index 000000000..b8ff19af2 --- /dev/null +++ b/docs/gstack-2/HOST-COMPATIBILITY.md @@ -0,0 +1,179 @@ +# GStack 2 host compatibility + +This matrix uses evidence tiers. It does not call a host “supported” merely +because its directory name exists in legacy setup code. + +## Tiers + +| Tier | Meaning | +|---|---| +| **Portable** | The canonical `skills//SKILL.md` tree follows the Agent Skills specification and uses no required host-private placement logic. This is a source-format claim. | +| **Verified** | The named layer and matrix cells passed against a recorded host/installer version. A scoped “Verified — installer” claim does not imply the host UI launched or executed judgment. | +| **Native** | A necessary host API adds behavior unavailable through portable skills while consuming the same canonical judgment source. Native is not “better”; it carries an additional adapter maintenance contract. | + +Tiers are cumulative only when evidence says so. A portable host is not +automatically verified. A legacy generated host output is not a native GStack 2 +bundle. + +## Canonical installation + +```bash +npx skills add time-attack/gstack +``` + +The standards installer owns host detection, destination paths, project/global +scope, copy versus symlink, updates, removal, and selected-skill installation. +Review its detected-host prompt; detection must never silently enroll a host. + +Examples supported by the installer interface: + +```bash +# One public skill only +npx skills add time-attack/gstack --skill plan + +# Installer-managed global scope +npx skills add time-attack/gstack -g +``` + +Run `npx skills add --help` for the installed CLI version before scripting +agent-selection flags. GStack deliberately does not reproduce those flags or +host paths in `./setup`. + +The expected discoverable names are exactly: + +```text +plan +design +qa +debug +review +ship +``` + +`compat/*.md` and `references/legacy/*.md` are not `SKILL.md` files and must not +appear as additional skills. Installing a subset must not pull the other five +public entries unless the user selected them. + +## Candidate installer matrix + +The isolated standard-installer matrix passed 470/470 checks with `skills` CLI +1.5.19: 16 install cases and two removal cases. Default discovery projected +only canonical `skills/`; separate explicit-selection cases covered a single +canonical skill and an opt-in legacy alias. The matrix used symlinked and spaced +source paths matching a clean checkout where ignored legacy host trees are +absent. Every installed file was a physical copy and its hash matched the +selected source. The standard skill installation remains Markdown-only and +does not install the optional runtime. The committed evidence artifact is +[`evals/installation/install-matrix.json`](../../evals/installation/install-matrix.json). + +| Host | Portable | Project all-six | Global all-six | Selected-skill coverage | Installer tier | Host UI/process | +|---|---|---|---|---|---|---| +| Claude Code | yes | pass | pass | no separate subset case | **Verified — installer** | pending | +| OpenAI Codex | yes | pass | pass | global `qa`, `review`, `ship` pass + removal pass; opt-in alias covered | **Verified — installer** | v1/v2 failed; live v3 pending | +| Cursor | yes | pass | pass | project `qa`, `review`, `ship` pass + removal pass | **Verified — installer** | pending | +| Pi | yes | pass | pass | no separate subset case | **Verified — installer** | pending | +| OpenClaw | yes | pass | pass | project `ship` single-skill pass | **Verified — installer** | pending | +| GitHub Copilot | yes | pass | pass | no separate subset case | **Verified — installer** | pending | + +The representative selection cases installed exactly `qa`, `review`, and +`ship`, independently at project scope for Cursor and global scope for Codex, +then removed them noninteractively. Separate cases installed only `ship` for +OpenClaw and explicitly selected the `office-hours` compatibility alias for +Codex; neither alias nor unselected canonical skill was silently enrolled. +`--copy` was advertised and used. + +This is filesystem/installer verification, not a claim that six host UIs loaded +or executed the skills. The Codex adversarial lane has no passing live result: +v1 and immutable v2 failed, while v3 is green only in its offline 18-test / +111-assertion harness and has not run live. The installer matrix used the +current local canonical projection through the published `npx skills` CLI, not +the still-unpushed GitHub branch URL. + +Legacy generators currently know ten host names. That is historical breadth, +not proof that all ten install correctly. Kiro's old Codex-rewrite behavior and +other host-output transforms are outside the canonical 2.0 path. + +## Verification procedure and evidence + +Use a clean temporary home and project for every cell; never test against an +operator's live skill directory. + +1. Record OS, host version, Node/npm version, and `skills` CLI version. +2. List the source and assert exactly six default entries. +3. Install all six at project scope and verify each host discovers only those + six GStack public skills. +4. Remove them through the standard installer. +5. Repeat at global scope. +6. Install a selected subset; verify unselected skills were not enrolled. +7. Reinstall/update without re-detecting or enrolling an unselected host. +8. Invoke a pure judgment mode with `gstack` absent from `PATH`. +9. Invoke a capability-dependent mode and verify one actionable runtime offer, + without breaking judgment. +10. Exercise a path containing spaces and, where supported, symlink and + read-only failure behavior. +11. Record exact command, exit status, output artifact, and cleanup result in + [TEST-EVIDENCE.md](./TEST-EVIDENCE.md). + +The automated filesystem portion is: + +```bash +bun test test/gstack2-installation.test.ts +bun run scripts/gstack2/test-install-matrix.ts --full \ + --output /tmp/gstack2-install-matrix.json +``` + +The current matrix passed 470/470 installer CLI checks across 16 installs and two +removals; its JSON artifact is committed at +[`evals/installation/install-matrix.json`](../../evals/installation/install-matrix.json). +Steps 8–9, a passing live v3 adversarial run, and actual host UI loading remain +separate behavioral gates. + +## Optional runtime/platform matrix + +The optional runtime is separate from skill placement. From a repository +checkout, the one host-neutral setup entrypoint is: + +```bash +./setup +~/.gstack/bin/gstack doctor --json +``` + +`./setup` resolves a symlinked checkout, installs dependencies only when absent, +builds missing allowlisted capabilities through the runtime-only build target, +validates and hashes every staged file, smoke-tests the CLI, atomically +activates the version, and writes stable POSIX and Windows launchers under +`$GSTACK_HOME/bin` (default `~/.gstack/bin`). The bundle uses `.exe` targets on +Windows and includes the CoreDevice/iOS bundle only on Darwin. Add the bin +directory to `PATH` if the short `gstack` command is desired. + +Twenty-one focused installer tests pass with 307 assertions. They cover +manifests, paths with spaces, +source-root symlinks, internal-link/path-escape rejection, failed build/ +validation/smoke rollback, interrupted-pointer recovery, stable POSIX/Windows +launchers, runtime-only builder selection, managed uninstall, and the +host-neutral wrapper. + +The current managed-bundle audit records 107 components, 1,830 files, +459,056,031 bytes, and 50 launchers. Setup installs frozen production-only +dependencies and excludes the development-only Claude Agent SDK. The +Sharp/ngrok closure is included. The Hugging Face sidecar is excluded and its +package is development-only, so setup installs neither its inference runtime +nor model weights and reports the L4 capability unavailable. + +| Platform | Source-level target | Candidate evidence | +|---|---|---| +| macOS | Node runtime + local browser + physical iOS where applicable | Runtime installer 21/307 and current bundle audit pass. The uninterrupted broad singleton run is green at 6,234 pass / 226 expected skips / 0 fail across 383 files. The signed-device gate remains pending. | +| Linux | Node runtime + local browser | Declared Dev Container focused suite passed at 43/0 with 265 assertions. A clean Linux arm64 container used production-only install with the development SDK absent, passed a local-browser journey and Sharp full-page screenshot, and uninstalled while preserving state. Native-host broad Linux remains pending. | +| Native Windows | Node runtime; curated free tests; browser fallback where retained | **Blocked:** native Windows CI pending. The local Windows-safe singleton lane is green at 2,813 pass / 57 expected skips / 0 fail across 213 files, but it is not native evidence. | +| Dev Container | Pure skills and optional runtime; browser only when container supports it | Declared image builds; focused GStack 2 suite and clean runtime install smoke pass. Full broad/browser coverage remains pending. | + +The six portable skills remain useful when runtime installation fails. A +runtime failure must not remove or corrupt their standard-installer placement. + +## Native adapters + +No GStack 2 native tier is currently required or awarded. A future native +bundle needs an accepted issue showing that a host API is necessary, must load +the same canonical judgment modules, and must pass the portable parity suite. +Host-specific presentation metadata such as `agents/openai.yaml` does not by +itself create a second judgment source or a Native claim. diff --git a/docs/gstack-2/IOS-PHYSICAL-DEVICE.md b/docs/gstack-2/IOS-PHYSICAL-DEVICE.md new file mode 100644 index 000000000..e995044d9 --- /dev/null +++ b/docs/gstack-2/IOS-PHYSICAL-DEVICE.md @@ -0,0 +1,196 @@ +# iOS physical-device harness + +`ios-qa/scripts/physical-device-smoke.ts` is the real-iPhone deployment lane for the existing DebugBridge backend. It uses Xcode, `devicectl`, and the daemon's CoreDevice tunnel bootstrap. It does not add an Appium, XCUITest, WebDriverAgent, simulator, or cloud-device backend. + +The harness is intentionally fail-closed. A setup problem is not a product failure, and neither one is a pass. + +## Current validation status + +Validated locally at the July 17, 2026 checkpoint with Xcode 26.6 and the wired iPhone supplied for this work: + +| Identifier kind | Example form | Used for | +|---|---|---| +| Hardware UDID | `` | Xcode build destination | +| CoreDevice UUID | `` | `devicectl`, tunnel bootstrap, install, launch | + +Exact local identifiers are deliberately not committed. Successful evidence stores only a SHA-256 fingerprint derived from both identifiers and omits the user-assigned device name. + +The daemon suite is green at 95 pass / 0 fail and 229 assertions. The physical +E2E preflight records 9 pass / 0 fail / 1 deploy skip and 29 assertions. The +host, pairing/trust, Developer Mode, wired transport, `devicectl`, `xcodegen`, +and DevToolsSecurity gates pass. The unsigned Release build also passes and +contains no DebugBridge module symbols or artifacts. + +The direct physical-device smoke is externally blocked at automatic signing. +It returned typed code `signing_unavailable`, category `setup_gate`. The +underlying Xcode diagnostic is: + +```text +Signing for "FixtureApp" requires a development team. +``` + +That is a setup gate, not a DebugBridge failure. No app was installed or +launched, and no pass artifact was written. The deploy skip and typed smoke +failure must not be represented as a physical-device pass. + +## Hardware UDID versus CoreDevice UUID + +An iPhone has two identifiers relevant to this flow: + +- The hardware UDID is the stable device identifier shown by Xcode. `xcodebuild -destination 'platform=iOS,id=…'` uses it. +- The CoreDevice UUID is the session-facing identifier in `devicectl` JSON. Device inspection, install, launch, app-container copy, and tunnel keepalive use it. + +The harness accepts either value through `--device` or `GSTACK_IOS_TARGET_UDID`. It matches the supplied value against both fields, then uses the correct identifier for each tool. It never assumes they are interchangeable internally. + +Inspect both values with: + +```bash +tmp=$(mktemp) +xcrun devicectl list devices --json-output "$tmp" +jq '.result.devices[] | { + name: .deviceProperties.name, + coreDeviceUUID: .identifier, + hardwareUDID: .hardwareProperties.udid, + transport: .connectionProperties.transportType, + pairing: .connectionProperties.pairingState, + developerMode: .deviceProperties.developerModeStatus +}' "$tmp" +rm "$tmp" +``` + +If exactly one wired iPhone is visible, the harness selects it. If selection is ambiguous, it refuses to guess and prints both identifier forms. + +## Setup gates + +Run the non-deploying preflight first: + +```bash +GSTACK_IOS_TARGET_UDID= \ + bun run ios-qa/scripts/physical-device-smoke.ts --preflight-only --json +``` + +The preflight checks these gates before any build or install: + +| Gate | Exact remediation | +|---|---| +| Full Xcode selected | `sudo xcode-select -s /Applications/Xcode.app/Contents/Developer` | +| First-launch components/license | `sudo xcodebuild -runFirstLaunch` | +| `devicectl` available | Verify `xcrun --find devicectl`; repair or update Xcode if missing | +| `xcodegen` available | `brew install xcodegen` | +| macOS DevToolsSecurity | `sudo DevToolsSecurity -enable`, then `DevToolsSecurity -status` | +| Wired iPhone | Connect directly over USB, unlock it, and accept the accessory prompt | +| Pairing and trust | `xcrun devicectl manage pair --device `, tap Trust, enter the iPhone passcode | +| iPhone Developer Mode | Settings > Privacy & Security > Developer Mode; enable, restart, unlock, and confirm Enable | +| CoreDevice management surface | Keep the phone unlocked and verify `xcrun devicectl device info processes --device ` | + +DevToolsSecurity and iPhone Developer Mode are separate gates. DevToolsSecurity authorizes developer tools on the Mac. Developer Mode authorizes development services on the iPhone. + +### Signing and provisioning + +The temporary Xcode project contains no hardcoded account or development team. The Debug build always requests automatic signing and provisioning updates. + +To unblock signing: + +1. Open Xcode > Settings > Accounts. +2. Add the Apple ID that owns the development team. +3. Create or download an Apple Development certificate. +4. Leave the iPhone connected and unlocked so Xcode can register it. +5. Optionally select a team explicitly for the harness: + +```bash +export GSTACK_IOS_DEVELOPMENT_TEAM=<10-character-team-id> +``` + +`GSTACK_IOS_TEAM_ID` is accepted as a compatibility alias. If both variables are present and disagree, the harness stops. It never discovers a team and silently hardcodes it. + +## Install safety + +The deployment fixture uses the reserved bundle ID: + +```text +com.gstack.iosqa.fixture.gstack2 +``` + +Before building, the harness asks `devicectl` whether that exact bundle ID is already installed. + +- No match: installation may proceed. +- A clearly identified prior `FixtureApp`: an in-place fixture update may proceed; app data is preserved. +- An app with the same bundle ID that does not identify as the fixture: the harness refuses to replace it. + +Only after inspecting a conflict may an operator explicitly allow an in-place replacement: + +```bash +export GSTACK_IOS_ALLOW_REPLACE_FIXTURE=1 +``` + +The harness never uninstalls an app and never deletes app data. It uses `devicectl device install app` only after the conflict check. + +## Build, deploy, and verify + +The full lane is opt-in in the Bun E2E test: + +```bash +GSTACK_HAS_IOS_DEVICE=1 \ +GSTACK_IOS_DEVICE_DEPLOY=1 \ +GSTACK_IOS_TARGET_UDID= \ + bun test test/skill-e2e-ios-device.test.ts +``` + +It can also run directly: + +```bash +GSTACK_IOS_TARGET_UDID= \ + bun run ios-qa/scripts/physical-device-smoke.ts --json +``` + +The harness performs these phases: + +1. Copies `test/fixtures/ios-qa/FixtureApp` into a new temporary directory, excluding previous build output and the fixture's unrelated signing spec. +2. Generates a team-neutral Release project with `xcodegen`, builds it unsigned for iPhoneOS, and scans the app executable and bundle for DebugBridge module names/artifacts. +3. Regenerates the Debug project with local DebugBridge package products, then asks Xcode for automatic signing/provisioning. An optional team comes only from the environment. +4. Checks the reserved bundle ID on the selected phone, installs without uninstalling or erasing data, and launches a fresh foreground fixture process. +5. Captures the short-lived boot token, calls the existing `bootstrapTunnel`, rotates the credential, and starts the existing CoreDevice tunnel keepalive. +6. Runs all five live iterations. A partial run is never promoted to pass evidence. + +## The five checks in every iteration + +Each of the five iterations executes the same five real-device checks: + +| Check | Required evidence | +|---|---| +| Health and bundle | `/healthz` returns `com.gstack.iosqa.fixture.gstack2` before and after the tap | +| Token rotation | Reusing the captured original boot token returns `401 boot_token_invalid` while the rotated credential remains usable | +| Session acquire | `/session/acquire` returns a session ID; the session is released even on failure | +| Screenshot and elements | `/screenshot` returns a valid PNG and `/elements` returns a live accessibility tree containing `tap-button` | +| Coordinate tap and cleanup | A center-coordinate `/tap` reports the expected active bundle before/after, the button count and screenshot both change, state is snapshotted/restored if needed, and the session is released | + +The loop records no bearer tokens or session IDs. It continues through all five iteration slots to make a 5/5 claim meaningful, then fails the run if any iteration failed. + +## Evidence policy + +JSON evidence is written atomically under `docs/gstack-2/evidence/` only after: + +- the Release guard passes; +- Debug signing, build, install, launch, and daemon bootstrap pass; +- all five iterations pass all five checks; +- the final session is released; +- the keepalive is stopped; and +- the temporary workspace is removed. + +Setup-gate failures, safety refusals, product failures, and partial live runs create no evidence file. A signing error must never be represented as a live pass. + +## Failure categories + +The CLI emits a typed `GSTACK_IOS_PHYSICAL_DEVICE_ERROR` JSON object and uses these categories: + +| Category | Exit code | Meaning | +|---|---:|---| +| `setup_gate` | 2 | Host, cable, trust, Developer Mode, account, certificate, provisioning, or CoreDevice setup prevents the product from being exercised | +| `safety_refusal` | 3 | The harness cannot prove an install is safe, usually because of an unrelated bundle-ID conflict | +| `product_failure` | 1 | The fixture or DebugBridge compiled incorrectly, leaked into Release, failed install/launch/bootstrap, or failed a live assertion | + +Fix setup gates without filing them as DebugBridge regressions. Treat a product failure as actionable only after all setup gates pass. + +## Cleanup guarantees + +Every session release is in a `finally` path. The outer cleanup stops the CoreDevice keepalive and removes the harness-owned temporary workspace whether the run passes or fails. The fixture remains installed and its data remains intact; uninstalling or deleting its data requires separate, explicit operator approval. diff --git a/docs/gstack-2/JUDGMENT-PARITY.md b/docs/gstack-2/JUDGMENT-PARITY.md new file mode 100644 index 000000000..8f7e15086 --- /dev/null +++ b/docs/gstack-2/JUDGMENT-PARITY.md @@ -0,0 +1,18 @@ +# Judgment parity + +Parity is executable, not a prose claim. Run `bun run scripts/gstack2/run-parity.ts` or the dedicated Bun tests. + +The pinned release inventory passes **4,681 checks** across 55 specialist sources, 16 carved sections, 25 routing scenarios, 16 regression ports, and **78 assets**. + +The suite verifies: + +- exactly six discoverable public skills and 55 internal legacy modules; +- 55 canonical templates plus 16 carved section templates at base `bb57306d98c97011b0919c6132705a15b1579781`; +- normalized legacy-body SHA-256 equality between source rendering and generated references; +- preservation of nine behavioral contract dimensions per module; +- 25 structured non-keyword routing fixtures with active/skipped modules, depth, mutation, and web context; +- 16 upstream judgment-port regression fixtures and anchors; +- all linked asset copies against their pinned Git blobs; +- frontmatter and `agents/openai.yaml` schema for each public skill. + +Golden normalization removes only generated provenance wrappers, bug-fix overlays, and irrelevant whitespace. It never removes legacy workflow prose, gates, questions, evidence requirements, artifacts, or exit behavior. diff --git a/docs/gstack-2/JUDGMENT-PROVENANCE.json b/docs/gstack-2/JUDGMENT-PROVENANCE.json new file mode 100644 index 000000000..2a88f16b3 --- /dev/null +++ b/docs/gstack-2/JUDGMENT-PROVENANCE.json @@ -0,0 +1,7916 @@ +{ + "schema_version": 1, + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "public_skills": [ + "plan", + "design", + "qa", + "debug", + "review", + "ship" + ], + "counts": { + "public_skills": 6, + "mandatory_inputs": 31, + "templates": 55, + "section_templates": 16, + "packaged_section_copies": 17, + "internal_execution_adapters": 1, + "scenarios": 25, + "bug_fix_ports": 16, + "assets": 78, + "dependency_copies": 10, + "runtime_helpers": 51 + }, + "sources": [ + { + "source": "gstack", + "tree": "plan", + "public_mode": "Discovery", + "legacy_mode": "catalog", + "source_path": "SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "402bd0d7b0f2bf02f6c9e4754e0e2a655f5f4057", + "normalized_render_sha256": "8e28cf7aa8c1c858ffaa4936d05a66bd4522bd6c6438be719f569b01c5afbcd8", + "target": "skills/plan/references/legacy/gstack.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "SKILL.md.tmpl", + "original_line_range": "1-92", + "purpose": "Legacy catalog and top-level workflow routing.", + "invocation_conditions": "The problem, user, wedge, or value proposition is still fluid.", + "modes": { + "public": "Discovery", + "legacy_alias": "catalog" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Route first" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/plan/references/legacy/gstack.md", + "parity_test": "evals/parity/contracts/gstack.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "office-hours", + "tree": "plan", + "public_mode": "Discovery", + "legacy_mode": "product", + "source_path": "office-hours/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "8568fe73cca76a80805fab3092cacd10db7e1d7f", + "normalized_render_sha256": "0f0017a3752dd58d013c11d4d19af956724b6eeea89899f045dc3f41a3aa89b1", + "target": "skills/plan/references/legacy/office-hours.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 2030 + ], + "original_source_file": "office-hours/SKILL.md.tmpl", + "original_line_range": "1-526", + "purpose": "Reframe a product idea through YC-style office hours.", + "invocation_conditions": "The problem, user, wedge, or value proposition is still fluid.", + "modes": { + "public": "Discovery", + "legacy_alias": "product" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "SETUP (run this check BEFORE any browse command)", + "YC Office Hours", + "Brain Context (preflight)", + "Phase 1: Context Gathering", + "Prior Learnings", + "Phase 2A: Startup Mode — YC Product Diagnostic", + "Operating Principles", + "Response Posture", + "Anti-Sycophancy Rules", + "Pushback Patterns — How to Push", + "The Six Forcing Questions", + "Q1: Demand Reality", + "Q2: Status Quo", + "Q3: Desperate Specificity", + "Q4: Narrowest Wedge", + "Q5: Observation & Surprise", + "Q6: Future-Fit", + "Phase 2B: Builder Mode — Design Partner", + "Operating Principles", + "Response Posture", + "Questions (generative, not interrogative)", + "Phase 2.5: Related Design Discovery", + "Phase 2.75: Landscape Awareness", + "Phase 3: Premise Challenge", + "Phase 4: Alternatives Generation (MANDATORY)", + "Visual Design Exploration", + "Visual Sketch (UI ideas only)", + "Phase 4.5: Founder Signal Synthesis", + "Builder Profile Append", + "Phase 5: Design Doc", + "Startup mode design doc template:", + "Builder mode design doc template:", + "Spec Review Loop", + "Brain Calibration Write-Back (Phase 2 / gated)", + "Brain Cache Background Refresh", + "Phase 6: Handoff — The Relationship Closing", + "Step 1: Read Builder Profile", + "Step 2: Follow the Tier Path", + "If TIER = introduction (first session)", + "If TIER = welcome_back (sessions 2-3)", + "If TIER = regular (sessions 4-7)", + "If TIER = inner_circle (sessions 8+)", + "Founder Resources (all tiers)", + "Next-skill recommendations — hand the user into the loop", + "Section self-check (before you finish)", + "Capture Learnings", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/plan/references/legacy/office-hours.md", + "parity_test": "evals/parity/contracts/office-hours.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "plan-ceo-review", + "tree": "plan", + "public_mode": "Product", + "legacy_mode": "ceo", + "source_path": "plan-ceo-review/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "c43cfe64146fe79df74a974f1673fe36defcce00", + "normalized_render_sha256": "eb1199228d8db2107eb7c4cbf889e2116117fcd54e63d5e2b9eceddacbc3bb50", + "target": "skills/plan/references/legacy/plan-ceo-review.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 2030 + ], + "original_source_file": "plan-ceo-review/SKILL.md.tmpl", + "original_line_range": "1-427", + "purpose": "Challenge scope, strategy, and the ten-star product shape.", + "invocation_conditions": "The plan exists and the main uncertainty is scope, ambition, or product trajectory.", + "modes": { + "public": "Product", + "legacy_alias": "ceo" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Step 0: Detect platform and base branch", + "Mega Plan Review Mode", + "Philosophy", + "Prime Directives", + "Engineering Preferences (use these to guide every recommendation)", + "Cognitive Patterns — How Great CEOs Think", + "Priority Hierarchy Under Context Pressure", + "PRE-REVIEW SYSTEM AUDIT (before Step 0)", + "Prerequisite Skill Offer", + "Retrospective Check", + "Frontend/UI Scope Detection", + "Taste Calibration (EXPANSION and SELECTIVE EXPANSION modes)", + "Landscape Check", + "Prior Learnings", + "Brain Context (preflight)", + "Step 0: Nuclear Scope Challenge + Mode Selection", + "0A. Premise Challenge", + "0B. Existing Code Leverage", + "0C. Dream State Mapping", + "0C-bis. Implementation Alternatives (MANDATORY)", + "0D-prelude. Expansion Framing (shared by EXPANSION and SELECTIVE EXPANSION)", + "0D. Mode-Specific Analysis", + "0D-POST. Persist CEO Plan (EXPANSION and SELECTIVE EXPANSION only)", + "Spec Review Loop", + "0E. Temporal Interrogation (EXPANSION, SELECTIVE EXPANSION, and HOLD modes)", + "0F. Mode Selection", + "Review Sections (11 sections, after scope and mode are agreed)", + "Section 1: Architecture Review", + "Section 2: Error & Rescue Map", + "Section 3: Security & Threat Model", + "Section 4: Data Flow & Interaction Edge Cases", + "Section 5: Code Quality Review", + "Section 6: Test Review", + "Section 7: Performance Review", + "Section 8: Observability & Debuggability Review", + "Section 9: Deployment & Rollout Review", + "Section 10: Long-Term Trajectory Review", + "Section 11: Design & UX Review (skip if no UI scope detected)", + "Outside Voice Integration Rule", + "Post-Implementation Design Audit (if UI scope detected)", + "CRITICAL RULE — How to ask questions", + "Required Outputs", + "\"NOT in scope\" section", + "\"What already exists\" section", + "\"Dream state delta\" section", + "Error & Rescue Registry (from Section 2)", + "Failure Modes Registry", + "TODOS.md updates", + "Scope Expansion Decisions (EXPANSION and SELECTIVE EXPANSION only)", + "Diagrams (mandatory, produce all that apply)", + "Stale Diagram Audit", + "Implementation Tasks", + "Markdown section (always emit)", + "JSONL artifact (always write, even if zero tasks)", + "Completion Summary", + "Unresolved Decisions", + "Handoff Note Cleanup", + "Review Log", + "Review Readiness Dashboard", + "Plan File Review Report", + "Detect the plan file", + "Generate the report", + "GSTACK REVIEW REPORT", + "Write to the plan file", + "Next Steps — Review Chaining", + "docs/designs Promotion (EXPANSION and SELECTIVE EXPANSION only)", + "Formatting Rules", + "Capture Learnings", + "Brain Calibration Write-Back (Phase 2 / gated)", + "Brain Cache Background Refresh", + "Mode Quick Reference", + "Section self-check (before you finish)", + "EXIT PLAN MODE GATE (BLOCKING)" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/plan/references/legacy/plan-ceo-review.md", + "parity_test": "evals/parity/contracts/plan-ceo-review.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "plan-eng-review", + "tree": "plan", + "public_mode": "Engineering", + "legacy_mode": "eng", + "source_path": "plan-eng-review/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "1d5be0e6f47f0896ee831b53c56818850b1dcfe4", + "normalized_render_sha256": "02dad060f44bffacc9cbc16532816930dbd0f2aa21466d0e97eaf36250a80833", + "target": "skills/plan/references/legacy/plan-eng-review.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 1071, + 2030 + ], + "original_source_file": "plan-eng-review/SKILL.md.tmpl", + "original_line_range": "1-158", + "purpose": "Review architecture, data flow, tests, performance, and failure modes.", + "invocation_conditions": "The plan needs architecture, data, failure-mode, performance, or test review.", + "modes": { + "public": "Engineering", + "legacy_alias": "eng" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Plan Review Mode", + "Scope gate (FIRST — overrides everything below). This is a hard STOP.", + "Priority hierarchy", + "My engineering preferences (use these to guide your recommendations):", + "Cognitive Patterns — How Great Eng Managers Think", + "Documentation and diagrams:", + "Brain Context (preflight)", + "BEFORE YOU START:", + "Design Doc Check", + "Prerequisite Skill Offer", + "Step 0: Scope Challenge", + "Review Sections (after scope is agreed)", + "Prior Learnings", + "1. Architecture review", + "Confidence Calibration", + "Pre-emit verification gate (#1539 — kills the \"field doesn't exist\" FP class)", + "2. Code quality review", + "3. Test review", + "Test Framework Detection", + "E2E Test Decision Matrix", + "REGRESSION RULE (mandatory)", + "Test Plan Artifact", + "4. Performance review", + "Outside Voice Integration Rule", + "CRITICAL RULE — How to ask questions", + "Required outputs", + "\"NOT in scope\" section", + "\"What already exists\" section", + "TODOS.md updates", + "Diagrams", + "Failure modes", + "Worktree parallelization strategy", + "Implementation Tasks", + "Markdown section (always emit)", + "JSONL artifact (always write, even if zero tasks)", + "Completion summary", + "Retrospective learning", + "Formatting rules", + "Review Log", + "Review Readiness Dashboard", + "Plan File Review Report", + "Detect the plan file", + "Generate the report", + "GSTACK REVIEW REPORT", + "Write to the plan file", + "Capture Learnings", + "Brain Calibration Write-Back (Phase 2 / gated)", + "Brain Cache Background Refresh", + "Next Steps — Review Chaining", + "Unresolved decisions", + "Section self-check (before you finish)", + "EXIT PLAN MODE GATE (BLOCKING)" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/plan/references/legacy/plan-eng-review.md", + "parity_test": "evals/parity/contracts/plan-eng-review.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "plan-devex-review", + "tree": "plan", + "public_mode": "DX", + "legacy_mode": "dx", + "source_path": "plan-devex-review/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "1ef723c10997a08ef87940daceb08bf8d60dd810", + "normalized_render_sha256": "5be964b8b6e8ddf87df7b44bb7713e0c31a3de32cf261682793bc7db45c7cba1", + "target": "skills/plan/references/legacy/plan-devex-review.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 2030 + ], + "original_source_file": "plan-devex-review/SKILL.md.tmpl", + "original_line_range": "1-462", + "purpose": "Review developer personas, time-to-hello-world, friction, and DX measurement.", + "invocation_conditions": "Developers, SDK/CLI/API consumers, onboarding, or documentation are the product surface.", + "modes": { + "public": "DX", + "legacy_alias": "dx" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Step 0: Detect platform and base branch", + "/plan-devex-review: Developer Experience Plan Review", + "DX First Principles", + "The Seven DX Characteristics", + "Cognitive Patterns — How Great DX Leaders Think", + "DX Scoring Rubric (0-10 calibration)", + "TTHW Benchmarks (Time to Hello World)", + "Hall of Fame Reference", + "Priority Hierarchy Under Context Pressure", + "PRE-REVIEW SYSTEM AUDIT (before Step 0)", + "Prerequisite Skill Offer", + "Auto-Detect Product Type + Applicability Gate", + "Brain Context (preflight)", + "Step 0: DX Investigation (before scoring)", + "0A. Developer Persona Interrogation", + "0B. Empathy Narrative as Conversation Starter", + "0C. Competitive DX Benchmarking", + "0D. Magical Moment Design", + "0E. Mode Selection", + "0F. Developer Journey Trace with Friction-Point Questions", + "0G. First-Time Developer Roleplay", + "The 0-10 Rating Method", + "Review Sections (8 passes, after Step 0 is complete)", + "Prior Learnings", + "DX Trend Check", + "Pass 1: Getting Started Experience (Zero Friction)", + "Pass 2: API/CLI/SDK Design (Usable + Useful)", + "Pass 3: Error Messages & Debugging (Fight Uncertainty)", + "Pass 4: Documentation & Learning (Findable + Learn by Doing)", + "Pass 5: Upgrade & Migration Path (Credible)", + "Pass 6: Developer Environment & Tooling (Valuable + Accessible)", + "Pass 7: Community & Ecosystem (Findable + Desirable)", + "Pass 8: DX Measurement & Feedback Loops (Implement + Refine)", + "Appendix: Claude Code Skill DX Checklist", + "CRITICAL RULE — How to ask questions", + "Required Outputs", + "Developer Persona Card", + "Developer Empathy Narrative", + "Competitive DX Benchmark", + "Magical Moment Specification", + "Developer Journey Map", + "First-Time Developer Confusion Report", + "\"NOT in scope\" section", + "\"What already exists\" section", + "TODOS.md updates", + "DX Scorecard", + "DX Implementation Checklist", + "Implementation Tasks", + "Markdown section (always emit)", + "JSONL artifact (always write, even if zero tasks)", + "Unresolved Decisions", + "Review Log", + "Review Readiness Dashboard", + "Plan File Review Report", + "Detect the plan file", + "Generate the report", + "GSTACK REVIEW REPORT", + "Write to the plan file", + "Capture Learnings", + "Brain Calibration Write-Back (Phase 2 / gated)", + "Brain Cache Background Refresh", + "Next Steps — Review Chaining", + "Mode Quick Reference", + "Formatting Rules", + "Section self-check (before you finish)", + "EXIT PLAN MODE GATE (BLOCKING)" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/plan/references/legacy/plan-devex-review.md", + "parity_test": "evals/parity/contracts/plan-devex-review.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "autoplan", + "tree": "plan", + "public_mode": "Full chain", + "legacy_mode": "auto", + "source_path": "autoplan/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "b2eaca9fde8f46001bea9961b8ed651d0f6f9e13", + "normalized_render_sha256": "706dd2fb1b3f3c7e6f446b268bd5a513fc7d2560ca12f702d670907402843a11", + "target": "skills/plan/references/legacy/autoplan.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 2014, + 2023 + ], + "original_source_file": "autoplan/SKILL.md.tmpl", + "original_line_range": "1-916", + "purpose": "Run CEO, design, engineering, and DX plan reviews with an auditable decision trail.", + "invocation_conditions": "The user wants the full CEO/design/engineering/DX chain with automatic routing.", + "modes": { + "public": "Full chain", + "legacy_alias": "auto" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Step 0: Detect platform and base branch", + "Prerequisite Skill Offer", + "/autoplan — Auto-Review Pipeline", + "The 6 Decision Principles", + "Decision Classification", + "Sequential Execution — MANDATORY", + "What \"Auto-Decide\" Means", + "Filesystem Boundary — Codex Prompts", + "Phase 0: Intake + Restore Point", + "Step 1: Capture restore point", + "Step 2: Read context", + "Step 3: Load skill files from disk", + "Phase 0.5: Codex auth + version preflight", + "Phase 1: CEO Review (Strategy & Scope)", + "Phase 2: Design Review (conditional — skip if no UI scope)", + "Phase 3: Eng Review + Dual Voices", + "Phase 3.5: DX Review (conditional — skip if no developer-facing scope)", + "Decision Audit Trail", + "Pre-Gate Verification", + "Phase 4: Final Approval Gate", + "Implementation Tasks aggregator", + "Completion: Write Review Logs", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/plan/references/legacy/autoplan.md", + "parity_test": "evals/parity/contracts/autoplan.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "spec", + "tree": "plan", + "public_mode": "Specification", + "legacy_mode": "spec", + "source_path": "spec/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "6c0c14e1b37e1e56d85427e9c8d080a6df908992", + "normalized_render_sha256": "1693c430139d43e80d2981d95a61dc9d3674435690d5d838f4ca92f4d592694a", + "target": "skills/plan/references/legacy/spec.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "spec/SKILL.md.tmpl", + "original_line_range": "1-769", + "purpose": "Turn intent into a backlog-ready issue/spec and optional execution handoff.", + "invocation_conditions": "Intent must become acceptance criteria, issue structure, testing, rollback, and handoff.", + "modes": { + "public": "Specification", + "legacy_alias": "spec" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/spec — Author a Backlog-Ready Spec (issue + optional agent spawn)", + "Flag Reference (parse from the user's initial invocation)", + "Process (STRICT — do not skip or combine phases)", + "Phase 1: Understand the \"Why\" (+ optional --dedupe)", + "Phase 2: Scope and Boundaries", + "Phase 3: Technical Interrogation (HARD requirement: read code first)", + "Phase 4: Draft Review", + "Phase 4.5: Quality Gate (--no-gate to skip)", + "Phase 4.5a: Semantic Content Review (precedes the redaction regex)", + "Phase 4.5b: Fail-closed redaction (PRECEDES dispatch)", + "Redaction scan — pre-codex (the spec body)", + "Phase 5: File the Spec (+ optional --execute)", + "Phase 5 dispatch logic (plan-mode-aware default)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "File the issue (always)", + "Redaction scan — pre-issue (the issue body you're about to file)", + "Archive the spec (always, local by default)", + "Redaction scan — pre-archive (the body about to be archived)", + "Spawn the agent (--execute path only)", + "TTHW telemetry (DX11/F7)", + "How to Ask Questions", + "Issue Quality Standards", + "1. Stakeholder Context (\"Why This Matters\")", + "2. Verified Current State", + "3. Audit Tables for Landscape Context", + "4. Quantified Impact", + "5. Prioritized Recommendations with Rationale", + "6. \"What's Working Well\" / \"Do Not Touch\"", + "7. Dependency Graphs for Multi-Part Work", + "8. Schema, API Shapes, and Data Models", + "9. File Reference Table", + "10. Testable Acceptance Criteria", + "11. Testing Pyramid", + "12. Root Cause Analysis (bugs and quality issues)", + "13. Effort Breakdown", + "14. Rollback Strategy", + "Issue Structure Templates", + "Standard Issues (default; also used for --bug, --feature, --refactor framings)", + "Epics", + "Audit / Cleanup Issues (routed via --audit flag)", + "Rules", + "Anti-Patterns", + "Handoff" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/plan/references/legacy/spec.md", + "parity_test": "evals/parity/contracts/spec.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "plan-tune", + "tree": "plan", + "public_mode": "Discovery", + "legacy_mode": "preferences", + "source_path": "plan-tune/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "dc1214d4c023ed2b126aca8aedb4153b222e73c5", + "normalized_render_sha256": "3b683319cf88f0d0b082654a45050d313d227fca16811aa1b859097a141f40f8", + "target": "skills/plan/references/legacy/plan-tune.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "plan-tune/SKILL.md.tmpl", + "original_line_range": "1-659", + "purpose": "Inspect and tune question preferences and developer profile.", + "invocation_conditions": "The problem, user, wedge, or value proposition is still fluid.", + "modes": { + "public": "Discovery", + "legacy_alias": "preferences" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/plan-tune — Question Tuning + Developer Profile (v1 observational)", + "Step 0: Detect what the user wants", + "Consent + opt-in", + "5-Q setup (post-consent, or via Setup gate)", + "Inspect profile", + "Review question log", + "Set a preference", + "Edit declared profile", + "Show gap", + "Stats", + "Recent auto-decisions", + "Audit unmarked questions", + "Dream cycle review", + "Dream cycle distill (manual trigger)", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/plan/references/legacy/plan-tune.md", + "parity_test": "evals/parity/contracts/plan-tune.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "context-save", + "tree": "plan", + "public_mode": "Discovery", + "legacy_mode": "context-save", + "source_path": "context-save/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "a3702bc95439cddd87841aba836708bf511ef55d", + "normalized_render_sha256": "06a3ef8d7c9d361e7497252b69082ee51786ef4fd2bb62d9e7c5d97817bfdb0d", + "target": "skills/plan/references/legacy/context-save.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "context-save/SKILL.md.tmpl", + "original_line_range": "1-274", + "purpose": "Save branch, decisions, and remaining work.", + "invocation_conditions": "The problem, user, wedge, or value proposition is still fluid.", + "modes": { + "public": "Discovery", + "legacy_alias": "context-save" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/context-save — Save Working Context", + "Detect command", + "Save flow", + "Step 1: Gather state", + "Step 2: Summarize context", + "Step 3: Compute session duration", + "Step 4: Write saved-context file", + "List flow", + "Step 1: Gather saved contexts", + "Step 2: Display table", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/plan/references/legacy/context-save.md", + "parity_test": "evals/parity/contracts/context-save.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "context-restore", + "tree": "plan", + "public_mode": "Discovery", + "legacy_mode": "context-restore", + "source_path": "context-restore/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "55889f6e06d3ba896f33a16969959c700bc24f1e", + "normalized_render_sha256": "33b0cb3f2f23ef913eafd18b73c34aafe879c22cf7c23ceed7a5b5324ac79d3a", + "target": "skills/plan/references/legacy/context-restore.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "context-restore/SKILL.md.tmpl", + "original_line_range": "1-155", + "purpose": "Restore saved working context safely.", + "invocation_conditions": "The problem, user, wedge, or value proposition is still fluid.", + "modes": { + "public": "Discovery", + "legacy_alias": "context-restore" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/context-restore — Restore Saved Working Context", + "Detect command", + "Restore flow", + "Step 1: Find saved contexts", + "Step 2: Load the right file", + "Step 3: Offer next steps", + "If no saved contexts exist", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/plan/references/legacy/context-restore.md", + "parity_test": "evals/parity/contracts/context-restore.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "learn", + "tree": "plan", + "public_mode": "Discovery", + "legacy_mode": "learning", + "source_path": "learn/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "90d08d2298cccd0d5090f194a2cd76a5361b4323", + "normalized_render_sha256": "0a155c2ed222aeb6d730583f4f9ce27ad6ad6c917a0bf583079da39a10e148d8", + "target": "skills/plan/references/legacy/learn.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 2030 + ], + "original_source_file": "learn/SKILL.md.tmpl", + "original_line_range": "1-198", + "purpose": "Manage explicit learned preferences and feedback.", + "invocation_conditions": "The problem, user, wedge, or value proposition is still fluid.", + "modes": { + "public": "Discovery", + "legacy_alias": "learning" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Project Learnings Manager", + "Detect command", + "Show recent (default)", + "Search", + "Prune", + "Export", + "Stats", + "Manual add" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/plan/references/legacy/learn.md", + "parity_test": "evals/parity/contracts/learn.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "retro", + "tree": "plan", + "public_mode": "Discovery", + "legacy_mode": "retro", + "source_path": "retro/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "b0819c8a6b736baf489179ba587442cf9973b9d2", + "normalized_render_sha256": "3cfdcdab3560e38aa04d3079b6707080d3859cd05e4d4aecfb68267367d4e8f7", + "target": "skills/plan/references/legacy/retro.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 1636, + 2037 + ], + "original_source_file": "retro/SKILL.md.tmpl", + "original_line_range": "1-961", + "purpose": "Produce evidence-backed shipping retrospectives.", + "invocation_conditions": "The problem, user, wedge, or value proposition is still fluid.", + "modes": { + "public": "Discovery", + "legacy_alias": "retro" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Step 0: Detect platform and base branch", + "/retro — Weekly Engineering Retrospective", + "User-invocable", + "Arguments", + "Instructions", + "Prior Learnings", + "Non-git context (optional)", + "Step 0.5: Stale-base + bad-today-anchor pre-flight guard", + "Step 1: Gather Raw Data", + "Step 2: Compute Metrics", + "Step 3: Commit Time Distribution", + "Step 4: Work Session Detection", + "Step 5: Commit Type Breakdown", + "Step 6: Hotspot Analysis", + "Step 7: PR Size Distribution", + "Step 8: Focus Score + Ship of the Week", + "Step 9: Team Member Analysis", + "Capture Learnings", + "Step 10: Week-over-Week Trends (if window >= 14d)", + "Step 11: Streak Tracking", + "Step 12: Load History & Compare", + "Step 13: Save Retro History", + "Step 14: Write the Narrative", + "Engineering Retro: [date range]", + "Summary Table", + "Trends vs Last Retro", + "Time & Session Patterns", + "Shipping Velocity", + "Code Quality Signals", + "Test Health", + "Plan Completion", + "Focus & Highlights", + "Your Week (personal deep-dive)", + "Team Breakdown", + "[Name]", + "Top 3 Team Wins", + "3 Things to Improve", + "3 Habits for Next Week", + "Week-over-Week Trends", + "Global Retrospective Mode", + "Global Step 1: Compute time window", + "Global Step 2: Run discovery", + "Global Step 3: Run git log on each discovered repo", + "Global Step 4: Compute global shipping streak", + "Global Step 5: Compute context switching metric", + "Global Step 6: Per-tool productivity patterns", + "Global Step 7: Aggregate and generate narrative", + "🚀 Your Week: [user name] — [date range]", + "Global Engineering Retro: [date range]", + "All Projects Overview", + "Per-Project Breakdown", + "Cross-Project Patterns", + "Tool Usage Analysis", + "Ship of the Week (Global)", + "3 Cross-Project Insights", + "3 Habits for Next Week", + "Global Step 8: Load history & compare", + "Global Step 9: Save snapshot", + "Compare Mode", + "Tone", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/plan/references/legacy/retro.md", + "parity_test": "evals/parity/contracts/retro.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "setup-gbrain", + "tree": "plan", + "public_mode": "Discovery", + "legacy_mode": "memory-setup", + "source_path": "setup-gbrain/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "f48581543b46ecf889f4f86fb7a0d9e75d0bd6ca", + "normalized_render_sha256": "3f87c1e0d75bd5c5cbe6848751271185e216b38945c93fddba7c7ac022fed982", + "target": "skills/plan/references/legacy/setup-gbrain.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "setup-gbrain/SKILL.md.tmpl", + "original_line_range": "1-1084", + "purpose": "Configure cross-machine memory.", + "invocation_conditions": "The problem, user, wedge, or value proposition is still fluid.", + "modes": { + "public": "Discovery", + "legacy_alias": "memory-setup" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/setup-gbrain — Coding-Agent Onboarding for gbrain", + "User-invocable", + "Step 1: Detect current state", + "Step 1.5: Broken-local-engine remediation (plan D4)", + "Step 2: Pick a path (AskUserQuestion)", + "Step 3: Install gbrain CLI (if missing)", + "Step 4: Initialize the brain", + "Path 1 (Supabase, existing URL)", + "Path 2a (Supabase, auto-provision — D7)", + "Path 2b (Supabase, manual)", + "Path 3 (PGLite local)", + "Path 4 (Remote gbrain MCP — HTTP transport with bearer token)", + "Switch (from detect's existing-engine state)", + "Step 5: Verify gbrain doctor", + "Step 5a: Register gbrain as Claude Code MCP (D18)", + "Path 4 (Remote MCP — HTTP transport with bearer)", + "Paths 1, 2a, 2b, 3 (Local stdio)", + "Both paths", + "Step 6: Per-remote policy (D3 triad, gated repo-import)", + "Step 7: Offer artifacts sync + wire it into gbrain", + "Path 4 (Remote MCP) — done after artifacts-init", + "Paths 1, 2a, 2b, 3 (Local stdio) — wire up the federated source", + "Step 7.5: Transcript & memory ingest gate", + "Step 8: Persist ## GBrain Configuration in CLAUDE.md", + "Path 4 (Remote MCP)", + "Paths 1, 2a, 2b, 3 (Local stdio)", + "Step 9: Smoke test", + "Path 4 (Remote MCP)", + "Paths 1, 2a, 2b, 3 (Local stdio)", + "Step 9.5: Brain trust policy (v1.48 brain-aware planning, D4 / Phase 1.5)", + "Step 10: GREEN/YELLOW/RED verdict block (idempotent doctor output)", + "Path 4 (Remote MCP)", + "Paths 1, 2a, 2b, 3 (Local stdio)", + "/setup-gbrain --cleanup-orphans (D20)", + "Telemetry (D4)", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/plan/references/legacy/setup-gbrain.md", + "parity_test": "evals/parity/contracts/setup-gbrain.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "sync-gbrain", + "tree": "plan", + "public_mode": "Discovery", + "legacy_mode": "memory-sync", + "source_path": "sync-gbrain/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "2ec065472e263a07f3818ed87ee9a6a2e13ca3ae", + "normalized_render_sha256": "b33fb4a5fadaf6bcf71363b4e8d9b1f3fd56336f47d23eb8e8594d534d76b55b", + "target": "skills/plan/references/legacy/sync-gbrain.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "sync-gbrain/SKILL.md.tmpl", + "original_line_range": "1-484", + "purpose": "Refresh the memory index from repository sources.", + "invocation_conditions": "The problem, user, wedge, or value proposition is still fluid.", + "modes": { + "public": "Discovery", + "legacy_alias": "memory-sync" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/sync-gbrain — Keep gbrain current and teach the agent to use it", + "User-invocable", + "Step 1: State probe", + "Step 1.5: Local engine pre-flight (plan D12)", + "Step 2: Run the orchestrator", + "Step 3: Code-index health check", + "Step 3.5: Call-graph health check (offer --dream)", + "Step 4: Refresh ## GBrain Search Guidance block in CLAUDE.md", + "Step 5: Verdict block (idempotent doctor output)", + "Concurrency note", + "Cross-machine note", + "Status reporting" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/plan/references/legacy/sync-gbrain.md", + "parity_test": "evals/parity/contracts/sync-gbrain.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "design-consultation", + "tree": "design", + "public_mode": "Generate", + "legacy_mode": "consult", + "source_path": "design-consultation/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "64af56ecdbd132cb7c28344e8e4ecb2e5dacf811", + "normalized_render_sha256": "2753c3423f22f9ef2b3baf31069bd2ac6951e7bc69cc70f28c8da5c07580ab26", + "target": "skills/design/references/legacy/design-consultation.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 2030, + 2189 + ], + "original_source_file": "design-consultation/SKILL.md.tmpl", + "original_line_range": "1-215", + "purpose": "Build a complete design system from product context.", + "invocation_conditions": "The user wants a coherent new artifact without product-code implementation.", + "modes": { + "public": "Generate", + "legacy_alias": "consult" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/design-consultation: Your Design System, Built Together", + "Phase 0: Pre-checks", + "SETUP (run this check BEFORE any browse command)", + "DESIGN SETUP (run this check BEFORE any design mockup command)", + "Prior Learnings", + "Phase 1: Product Context", + "Taste profile (if this user has prior sessions)", + "Phase 2: Research (only if user said yes)", + "Phase 3: The Complete Proposal", + "Your Design Knowledge (use to inform proposals — do NOT display as tables)", + "Coherence Validation", + "Phase 4: Drill-downs (only if user requests adjustments)", + "Phase 5: Design System Preview (default ON)", + "Path A: AI Mockups (if DESIGN_READY)", + "Comparison Board + Feedback Loop", + "Path B: HTML Preview Page (fallback if DESIGN_NOT_AVAILABLE)", + "Preview Page Requirements (Path B only)", + "Phase 6: Write DESIGN.md & Confirm", + "Capture Learnings", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/design/references/legacy/design-consultation.md", + "parity_test": "evals/parity/contracts/design-consultation.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "design-shotgun", + "tree": "design", + "public_mode": "Explore", + "legacy_mode": "alternatives", + "source_path": "design-shotgun/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "230dbc2922f05bf272bf5168a958a12604fac1bc", + "normalized_render_sha256": "2ffa676332b91cb2f4f0ae4a08d917dd43a767995b33d960895c15e93fb7c73c", + "target": "skills/design/references/legacy/design-shotgun.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 1777 + ], + "original_source_file": "design-shotgun/SKILL.md.tmpl", + "original_line_range": "1-345", + "purpose": "Generate and compare multiple visual directions.", + "invocation_conditions": "The user needs alternatives and structured preference discovery before committing.", + "modes": { + "public": "Explore", + "legacy_alias": "alternatives" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/design-shotgun: Visual Design Exploration", + "DESIGN SETUP (run this check BEFORE any design mockup command)", + "UX Principles: How Users Actually Behave", + "The Three Laws of Usability", + "How Users Actually Behave", + "Billboard Design for Interfaces", + "Navigation as Wayfinding", + "The Goodwill Reservoir", + "Mobile: Same Rules, Higher Stakes", + "Step 0: Session Detection", + "Step 1: Context Gathering", + "Step 2: Taste Memory", + "Step 3: Generate Variants", + "Step 3a: Concept Generation", + "Step 3b: Concept Confirmation", + "Step 3c: Parallel Generation", + "Step 3d: Results", + "Step 4: Comparison Board + Feedback Loop", + "Comparison Board + Feedback Loop", + "Step 5: Feedback Confirmation", + "Step 6: Save & Next Steps", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/design/references/legacy/design-shotgun.md", + "parity_test": "evals/parity/contracts/design-shotgun.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "design-html", + "tree": "design", + "public_mode": "Implement", + "legacy_mode": "html", + "source_path": "design-html/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "3cdec9a14d62d2e046ed924c972efc30a7d43aca", + "normalized_render_sha256": "f6dd88ea765653cd49bac6479c8212977bb578afca4c900153a9c646c260b943", + "target": "skills/design/references/legacy/design-html.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "design-html/SKILL.md.tmpl", + "original_line_range": "1-601", + "purpose": "Generate production-quality Pretext-native HTML/CSS.", + "invocation_conditions": "The user authorizes design code generation or validated visual fixes.", + "modes": { + "public": "Implement", + "legacy_alias": "html" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/design-html: Pretext-Native HTML Engine", + "DESIGN SETUP (run this check BEFORE any design mockup command)", + "UX Principles: How Users Actually Behave", + "The Three Laws of Usability", + "How Users Actually Behave", + "Billboard Design for Interfaces", + "Navigation as Wayfinding", + "The Goodwill Reservoir", + "Mobile: Same Rules, Higher Stakes", + "SETUP (run this check BEFORE any browse command)", + "Step 0: Input Detection", + "Case A: approved.json exists (design-shotgun ran)", + "Case B: CEO plan and/or design variants exist, but no approved.json", + "Case C: Nothing found (clean slate)", + "Context summary", + "Step 1: Design Analysis", + "Step 2: Smart Pretext API Routing", + "Step 2.5: Framework Detection", + "Step 3: Generate Pretext-Native HTML", + "Pretext Source Embedding", + "HTML Generation", + "Pretext Wiring Patterns", + "Pretext API Reference", + "Step 3.5: Live Reload Server", + "Step 4: Preview + Refinement Loop", + "Verification Screenshots", + "Refinement Loop", + "Step 5: Save & Next Steps", + "Design Token Extraction", + "Save Metadata", + "Next Steps", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/design/references/legacy/design-html.md", + "parity_test": "evals/parity/contracts/design-html.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "plan-design-review", + "tree": "design", + "public_mode": "Critique", + "legacy_mode": "plan-review", + "source_path": "plan-design-review/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "7178c991e41277410de500298cf81372543861af", + "normalized_render_sha256": "05fdb5d63dc6007307c74493f0597251fb9d203b310f7c80b5921b94666f3d99", + "target": "skills/design/references/legacy/plan-design-review.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 2030, + 2189 + ], + "original_source_file": "plan-design-review/SKILL.md.tmpl", + "original_line_range": "1-295", + "purpose": "Review a plan for interaction states, visual quality, and accessibility.", + "invocation_conditions": "The user wants design judgment and evidence without authorizing implementation changes.", + "modes": { + "public": "Critique", + "legacy_alias": "plan-review" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Step 0: Detect platform and base branch", + "/plan-design-review: Designer's Eye Plan Review", + "Scope gate (FIRST — overrides everything below). This is a hard STOP.", + "Design Philosophy", + "The gstack designer — YOUR PRIMARY TOOL", + "Design Principles", + "Cognitive Patterns — How Great Designers See", + "UX Principles: How Users Actually Behave", + "The Three Laws of Usability", + "How Users Actually Behave", + "Billboard Design for Interfaces", + "Navigation as Wayfinding", + "The Goodwill Reservoir", + "Mobile: Same Rules, Higher Stakes", + "Priority Hierarchy Under Context Pressure", + "PRE-REVIEW SYSTEM AUDIT (before Step 0)", + "Retrospective Check", + "UI Scope Detection", + "DESIGN SETUP (run this check BEFORE any design mockup command)", + "Brain Context (preflight)", + "Step 0: Design Scope Assessment", + "0A. Initial Design Rating", + "0B. DESIGN.md Status", + "0C. Existing Design Leverage", + "0D. Focus Areas", + "Step 0.5: Visual Mockups (DEFAULT when DESIGN_READY)", + "Comparison Board + Feedback Loop", + "The 0-10 Rating Method", + "\"Show me what 10/10 looks like\" (requires design binary)", + "Review Sections (7 passes, after scope is agreed)", + "Prior Learnings", + "Pass 1: Information Architecture", + "Pass 2: Interaction State Coverage", + "Pass 3: User Journey & Emotional Arc", + "Pass 4: AI Slop Risk", + "Design Hard Rules", + "Pass 5: Design System Alignment", + "Pass 6: Responsive & Accessibility", + "Pass 7: Unresolved Design Decisions", + "Post-Pass: Update Mockups (if generated)", + "CRITICAL RULE — How to ask questions", + "Required Outputs", + "\"NOT in scope\" section", + "\"What already exists\" section", + "TODOS.md updates", + "Implementation Tasks", + "Markdown section (always emit)", + "JSONL artifact (always write, even if zero tasks)", + "Completion Summary", + "Unresolved Decisions", + "Approved Mockups", + "Review Log", + "Review Readiness Dashboard", + "Plan File Review Report", + "Detect the plan file", + "Generate the report", + "GSTACK REVIEW REPORT", + "Write to the plan file", + "Capture Learnings", + "Brain Calibration Write-Back (Phase 2 / gated)", + "Brain Cache Background Refresh", + "Next Steps — Review Chaining", + "Formatting Rules", + "Section self-check (before you finish)", + "EXIT PLAN MODE GATE (BLOCKING)" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/design/references/legacy/plan-design-review.md", + "parity_test": "evals/parity/contracts/plan-design-review.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "design-review", + "tree": "design", + "public_mode": "Implement", + "legacy_mode": "live-review", + "source_path": "design-review/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "bdcda48e29b489a1cc49faa333922412251d4b41", + "normalized_render_sha256": "8711f4910f9cb9d022d024c432093bccbcf8d4e74250a3a25f915eb086de6c5a", + "target": "skills/design/references/legacy/design-review.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 1920, + 2030, + 2189 + ], + "original_source_file": "design-review/SKILL.md.tmpl", + "original_line_range": "1-313", + "purpose": "Audit, fix, and verify an implemented web UI.", + "invocation_conditions": "The user authorizes design code generation or validated visual fixes.", + "modes": { + "public": "Implement", + "legacy_alias": "live-review" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/design-review: Design Audit → Fix → Verify", + "Setup", + "SETUP (run this check BEFORE any browse command)", + "Test Framework Bootstrap", + "B2. Research best practices", + "B3. Framework selection", + "B4. Install and configure", + "B4.5. First real tests", + "B5. Verify", + "B5.5. CI/CD pipeline", + "B6. Create TESTING.md", + "B7. Update CLAUDE.md", + "B8. Commit", + "DESIGN SETUP (run this check BEFORE any design mockup command)", + "Prior Learnings", + "UX Principles: How Users Actually Behave", + "The Three Laws of Usability", + "How Users Actually Behave", + "Billboard Design for Interfaces", + "Navigation as Wayfinding", + "The Goodwill Reservoir", + "Mobile: Same Rules, Higher Stakes", + "Phases 1-6: Design Audit Baseline", + "Modes", + "Full (default)", + "Quick (--quick)", + "Deep (--deep)", + "Diff-aware (automatic when on a feature branch with no URL)", + "Regression (--regression or previous design-baseline.json found)", + "Phase 1: First Impression", + "Phase 2: Design System Extraction", + "Phase 3: Page-by-Page Visual Audit", + "Auth Detection", + "Trunk Test (run on every page)", + "Design Audit Checklist (10 categories, ~80 items)", + "Phase 4: Interaction Flow Review", + "Goodwill Reservoir (track across the flow)", + "Phase 5: Cross-Page Consistency", + "Phase 6: Compile Report", + "Output Locations", + "Scoring System", + "Regression Output", + "Design Critique Format", + "Important Rules", + "Design Hard Rules", + "Output Structure", + "Phase 7: Triage", + "Phase 8: Fix Loop", + "8a. Locate source", + "8a.5. Target Mockup (if DESIGN_READY)", + "8b. Fix", + "8c. Commit", + "8d. Re-test", + "8e. Classify", + "8e.5. Regression Test (design-review variant)", + "8f. Self-Regulation (STOP AND EVALUATE)", + "Phase 9: Final Design Audit", + "Phase 10: Report", + "Phase 11: TODOS.md Update", + "Capture Learnings", + "Additional Rules (design-review specific)" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/design/references/legacy/design-review.md", + "parity_test": "evals/parity/contracts/design-review.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "ios-design-review", + "tree": "design", + "public_mode": "Critique", + "legacy_mode": "ios-review", + "source_path": "ios-design-review/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "dd9e2518f53edf939a1e425806abc871a9b33022", + "normalized_render_sha256": "38bb6ba7876611f5ae63566820f67a48f9b1797c33d000c866540a4e6f766d50", + "target": "skills/design/references/legacy/ios-design-review.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "ios-design-review/SKILL.md.tmpl", + "original_line_range": "1-106", + "purpose": "Score and iterate a real iOS interface against Apple HIG.", + "invocation_conditions": "The user wants design judgment and evidence without authorizing implementation changes.", + "modes": { + "public": "Critique", + "legacy_alias": "ios-review" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "iOS Design Review", + "Connection", + "Dimensions + scoring", + "Loop", + "Output", + "Failure modes" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/design/references/legacy/ios-design-review.md", + "parity_test": "evals/parity/contracts/ios-design-review.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "diagram", + "tree": "design", + "public_mode": "Generate", + "legacy_mode": "diagram", + "source_path": "diagram/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "9e19a52c6b7f727ce4faf5c1f9c14514ecb52f50", + "normalized_render_sha256": "88d1b8810d6ae95c6cf984825e2fe96712dfe4a7f7dba3e03d8a3634cf9e97ca", + "target": "skills/design/references/legacy/diagram.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "diagram/SKILL.md.tmpl", + "original_line_range": "1-151", + "purpose": "Render diagrams from English descriptions.", + "invocation_conditions": "The user wants a coherent new artifact without product-code implementation.", + "modes": { + "public": "Generate", + "legacy_alias": "diagram" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/diagram — English in, editable diagram out", + "Step 1 — Author the diagram", + "Step 2 — Stage the render bundle (once per session)", + "Step 3 — Render the triplet", + "Step 4 — Show and deliver", + "Rules", + "Completion status" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/design/references/legacy/diagram.md", + "parity_test": "evals/parity/contracts/diagram.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "make-pdf", + "tree": "design", + "public_mode": "Generate", + "legacy_mode": "pdf", + "source_path": "make-pdf/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "9133a711d4f3d056a21f790e8ec3b98f13fbaa50", + "normalized_render_sha256": "7901a455bf36750224e05468d0123c32e8b9bc98c7334fb0973228bdbba80997", + "target": "skills/design/references/legacy/make-pdf.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "make-pdf/SKILL.md.tmpl", + "original_line_range": "1-248", + "purpose": "Render publication-quality PDFs from Markdown.", + "invocation_conditions": "The user wants a coherent new artifact without product-code implementation.", + "modes": { + "public": "Generate", + "legacy_alias": "pdf" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "MAKE-PDF SETUP (run this check BEFORE any make-pdf command)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "make-pdf: publication-quality PDFs from markdown", + "Core patterns", + "80% case — memo/letter", + "Publication mode — cover + TOC + chapter breaks", + "Draft-stage watermark", + "Fast iteration via preview", + "Brand-free (no CONFIDENTIAL footer)", + "Diagrams — mermaid and excalidraw fences render as pictures", + "Images — scaled right, never truncated", + "Other formats — single-file HTML and Word", + "CI mode — fail loud on missing assets", + "Common flags", + "When Claude should run it", + "Debugging", + "Output contract" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/design/references/legacy/make-pdf.md", + "parity_test": "evals/parity/contracts/make-pdf.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "qa", + "tree": "qa", + "public_mode": "Fix", + "legacy_mode": "fix", + "source_path": "qa/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "11997f7b878282c34b6bfd3d4b7a8131f9ad4da8", + "normalized_render_sha256": "025c1fbca58477248afb826cde24766904749129177e2bc60fbf2370207d1da5", + "target": "skills/qa/references/legacy/qa.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 1484, + 2030, + 2186 + ], + "original_source_file": "qa/SKILL.md.tmpl", + "original_line_range": "1-355", + "purpose": "Test a web application, fix validated bugs, and re-verify.", + "invocation_conditions": "The user explicitly authorizes validated bug fixes and exact-journey re-verification.", + "modes": { + "public": "Fix", + "legacy_alias": "fix" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Step 0: Detect platform and base branch", + "/qa: Test → Fix → Verify", + "Setup", + "SETUP (run this check BEFORE any browse command)", + "Test Framework Bootstrap", + "B2. Research best practices", + "B3. Framework selection", + "B4. Install and configure", + "B4.5. First real tests", + "B5. Verify", + "B5.5. CI/CD pipeline", + "B6. Create TESTING.md", + "B7. Update CLAUDE.md", + "B8. Commit", + "Prior Learnings", + "Test Plan Context", + "Phases 1-6: QA Baseline", + "Modes", + "Diff-aware (automatic when on a feature branch with no URL)", + "Full (default when URL is provided)", + "Quick (--quick)", + "Regression (--regression )", + "Workflow", + "Phase 1: Initialize", + "Phase 2: Authenticate (if needed)", + "Phase 3: Orient", + "Phase 4: Explore", + "Phase 5: Document", + "Phase 6: Wrap Up", + "Health Score Rubric", + "Console (weight: 15%)", + "Links (weight: 10%)", + "Per-Category Scoring (Visual, Functional, UX, Content, Performance, Accessibility)", + "Weights", + "Final Score", + "Framework-Specific Guidance", + "Next.js", + "Rails", + "WordPress", + "General SPA (React, Vue, Angular)", + "Important Rules", + "Output Structure", + "Phase 7: Triage", + "Refresh learnings for the component/page where the bug lives", + "Phase 8: Fix Loop", + "8a. Locate source", + "8b. Fix", + "8c. Commit", + "8d. Re-test", + "8e. Classify", + "8e.5. Regression Test", + "8f. Self-Regulation (STOP AND EVALUATE)", + "Phase 9: Final QA", + "Phase 10: Report", + "Phase 11: TODOS.md Update", + "Capture Learnings", + "Additional Rules (qa-specific)" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/qa/references/legacy/qa.md", + "parity_test": "evals/parity/contracts/qa.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "qa-only", + "tree": "qa", + "public_mode": "Report", + "legacy_mode": "report", + "source_path": "qa-only/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "75c4123cc5c406ffdd36c71a094335c137135b1e", + "normalized_render_sha256": "90f138a7ded37476397e3399ed686a92f9317161ba6e2256d6c7ed7c2893e273", + "target": "skills/qa/references/legacy/qa-only.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 1484, + 2030 + ], + "original_source_file": "qa-only/SKILL.md.tmpl", + "original_line_range": "1-115", + "purpose": "Test a web application and report without changing code.", + "invocation_conditions": "The user asks for evidence or findings without authorizing product-code changes.", + "modes": { + "public": "Report", + "legacy_alias": "report" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/qa-only: Report-Only QA Testing", + "Setup", + "SETUP (run this check BEFORE any browse command)", + "Prior Learnings", + "Test Plan Context", + "Modes", + "Diff-aware (automatic when on a feature branch with no URL)", + "Full (default when URL is provided)", + "Quick (--quick)", + "Regression (--regression )", + "Workflow", + "Phase 1: Initialize", + "Phase 2: Authenticate (if needed)", + "Phase 3: Orient", + "Phase 4: Explore", + "Phase 5: Document", + "Phase 6: Wrap Up", + "Health Score Rubric", + "Console (weight: 15%)", + "Links (weight: 10%)", + "Per-Category Scoring (Visual, Functional, UX, Content, Performance, Accessibility)", + "Weights", + "Final Score", + "Framework-Specific Guidance", + "Next.js", + "Rails", + "WordPress", + "General SPA (React, Vue, Angular)", + "Important Rules", + "Output", + "Output Structure", + "Capture Learnings", + "Additional Rules (qa-only specific)" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/qa/references/legacy/qa-only.md", + "parity_test": "evals/parity/contracts/qa-only.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "ios-qa", + "tree": "qa", + "public_mode": "Report", + "legacy_mode": "ios", + "source_path": "ios-qa/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "e93d2831a31df65ec8e4e8693919ef5bf148457f", + "normalized_render_sha256": "37b9baf014dcfa6ed3266ae3241dad17956a0b6b3f332dc44bdb728daa3c8f01", + "target": "skills/qa/references/legacy/ios-qa.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "ios-qa/SKILL.md.tmpl", + "original_line_range": "1-222", + "purpose": "Drive a real iPhone through DebugBridge and capture evidence.", + "invocation_conditions": "The user asks for evidence or findings without authorizing product-code changes.", + "modes": { + "public": "Report", + "legacy_alias": "ios" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Live-device iOS QA", + "Architecture", + "Prerequisites", + "Phase 0: Session warm-start (optional)", + "Phase 1: Read source, plan codegen", + "Phase 2: Bootstrap the device bridge", + "Phase 3: Vision-driven agent loop", + "Modes", + "Demo mode", + "Failure modes + recovery", + "Cleanup" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/qa/references/legacy/ios-qa.md", + "parity_test": "evals/parity/contracts/ios-qa.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "devex-review", + "tree": "qa", + "public_mode": "Report", + "legacy_mode": "dx", + "source_path": "devex-review/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "081d4f35bbdec0c6b3da8ae71615ec4d41a84551", + "normalized_render_sha256": "849895ef49f7c855bfa819620e94d41da9909eb5baf214719b004130ecd741d6", + "target": "skills/qa/references/legacy/devex-review.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 2030 + ], + "original_source_file": "devex-review/SKILL.md.tmpl", + "original_line_range": "1-230", + "purpose": "Measure the real developer journey, CLI/API ergonomics, and error recovery.", + "invocation_conditions": "The user asks for evidence or findings without authorizing product-code changes.", + "modes": { + "public": "Report", + "legacy_alias": "dx" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Step 0: Detect platform and base branch", + "SETUP (run this check BEFORE any browse command)", + "/devex-review: Live Developer Experience Audit", + "DX First Principles", + "The Seven DX Characteristics", + "Cognitive Patterns — How Great DX Leaders Think", + "DX Scoring Rubric (0-10 calibration)", + "TTHW Benchmarks (Time to Hello World)", + "Hall of Fame Reference", + "Scope Declaration", + "Step 0: Target Discovery", + "Boomerang Baseline", + "Step 1: Getting Started Audit", + "Step 2: API/CLI/SDK Ergonomics Audit", + "Step 3: Error Message Audit", + "Step 4: Documentation Audit", + "Step 5: Upgrade Path Audit", + "Step 6: Developer Environment Audit", + "Step 7: Community & Ecosystem Audit", + "Step 8: DX Measurement Audit", + "DX Scorecard with Evidence", + "Boomerang Comparison", + "Review Log", + "Review Readiness Dashboard", + "Plan File Review Report", + "Detect the plan file", + "Generate the report", + "GSTACK REVIEW REPORT", + "Write to the plan file", + "Capture Learnings", + "Next Steps", + "Formatting Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/qa/references/legacy/devex-review.md", + "parity_test": "evals/parity/contracts/devex-review.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "benchmark", + "tree": "qa", + "public_mode": "Report", + "legacy_mode": "performance", + "source_path": "benchmark/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "038f16f5fba4ae4e9eae922e3276bba8ef88149e", + "normalized_render_sha256": "c579dad9e78a12bf7547a6dd752daaa3299c66c55d8170290c075caa5d1fa660", + "target": "skills/qa/references/legacy/benchmark.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "benchmark/SKILL.md.tmpl", + "original_line_range": "1-242", + "purpose": "Measure performance and detect regressions.", + "invocation_conditions": "The user asks for evidence or findings without authorizing product-code changes.", + "modes": { + "public": "Report", + "legacy_alias": "performance" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "SETUP (run this check BEFORE any browse command)", + "/benchmark — Performance Regression Detection", + "User-invocable", + "Arguments", + "Instructions", + "Phase 1: Setup", + "Phase 2: Page Discovery", + "Phase 3: Performance Data Collection", + "Phase 4: Baseline Capture (--baseline mode)", + "Phase 5: Comparison", + "Phase 6: Slowest Resources", + "Phase 7: Performance Budget", + "Phase 8: Trend Analysis (--trend mode)", + "Phase 9: Save Report", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/qa/references/legacy/benchmark.md", + "parity_test": "evals/parity/contracts/benchmark.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "canary", + "tree": "qa", + "public_mode": "Report", + "legacy_mode": "canary", + "source_path": "canary/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "d1eb2950aba2fa2b09d90f13143492c60d46793c", + "normalized_render_sha256": "551c32a7bbbdc5dec6f88751e885869df9d1a26286df233cb78b51beb2e0987a", + "target": "skills/qa/references/legacy/canary.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 2186 + ], + "original_source_file": "canary/SKILL.md.tmpl", + "original_line_range": "1-226", + "purpose": "Monitor deployed pages against baseline evidence and thresholds.", + "invocation_conditions": "The user asks for evidence or findings without authorizing product-code changes.", + "modes": { + "public": "Report", + "legacy_alias": "canary" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "SETUP (run this check BEFORE any browse command)", + "Step 0: Detect platform and base branch", + "/canary — Post-Deploy Visual Monitor", + "User-invocable", + "Arguments", + "Instructions", + "Phase 1: Setup", + "Phase 2: Baseline Capture (--baseline mode)", + "Phase 3: Page Discovery", + "Phase 4: Pre-Deploy Snapshot (if no baseline exists)", + "Phase 5: Continuous Monitoring Loop", + "Phase 6: Health Report", + "Phase 7: Baseline Update", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/qa/references/legacy/canary.md", + "parity_test": "evals/parity/contracts/canary.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "browse", + "tree": "qa", + "public_mode": "Report", + "legacy_mode": "browser", + "source_path": "browse/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "9a159e4c9820172c229e2174d4a62a8f9668ab93", + "normalized_render_sha256": "9d5a75a6e20d40bf2d275ca39375899bb6c51abd4e8ce1042e8db4450e891196", + "target": "skills/qa/references/legacy/browse.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 2186 + ], + "original_source_file": "browse/SKILL.md.tmpl", + "original_line_range": "1-312", + "purpose": "Operate the bundled headless browser directly.", + "invocation_conditions": "The user asks for evidence or findings without authorizing product-code changes.", + "modes": { + "public": "Report", + "legacy_alias": "browser" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "browse: QA Testing & Dogfooding", + "SETUP (run this check BEFORE any browse command)", + "Core QA Patterns", + "1. Verify a page loads correctly", + "2. Test a user flow", + "3. Verify an action worked", + "4. Visual evidence for bug reports", + "5. Find all clickable elements (including non-ARIA)", + "6. Assert element states", + "7. Test responsive layouts", + "8. Test file uploads", + "9. Test dialogs", + "10. Compare environments", + "11. Show screenshots to the user", + "12. Render local HTML (no HTTP server needed)", + "13. Retina screenshots (deviceScaleFactor)", + "14. Offline render mode (rasterize your own HTML/JSON, zero network)", + "Puppeteer → browse cheatsheet", + "User Handoff", + "Headed Mode + Proxy + Anti-Bot Sites", + "Snapshot Flags", + "CSS Inspector & Style Modification", + "Inspect element CSS", + "Modify styles live", + "Clean screenshots", + "Full Command List", + "Navigation", + "Reading", + "Extraction", + "Interaction", + "Inspection", + "Visual", + "Snapshot", + "Meta", + "Tabs", + "Server" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/qa/references/legacy/browse.md", + "parity_test": "evals/parity/contracts/browse.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "open-gstack-browser", + "tree": "qa", + "public_mode": "Report", + "legacy_mode": "browser-visible", + "source_path": "open-gstack-browser/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "ef91a527890a3ac3622cc7dc84bad1ff7b64443b", + "normalized_render_sha256": "54c16f55549393a6a2080c5d3f4c0055ce92ca63bdb3966965d96ec5cae3f405", + "target": "skills/qa/references/legacy/open-gstack-browser.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "open-gstack-browser/SKILL.md.tmpl", + "original_line_range": "1-210", + "purpose": "Open the visible GStack browser.", + "invocation_conditions": "The user asks for evidence or findings without authorizing product-code changes.", + "modes": { + "public": "Report", + "legacy_alias": "browser-visible" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/open-gstack-browser — Launch GStack Browser", + "SETUP (run this check BEFORE any browse command)", + "Step 0: Pre-flight cleanup", + "Step 1: Connect", + "Step 2: Verify", + "Step 3: Guide the user to the Side Panel", + "Step 4: Demo", + "Step 5: Sidebar chat", + "Step 6: What's next" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/qa/references/legacy/open-gstack-browser.md", + "parity_test": "evals/parity/contracts/open-gstack-browser.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "setup-browser-cookies", + "tree": "qa", + "public_mode": "Report", + "legacy_mode": "browser-auth", + "source_path": "setup-browser-cookies/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "f812d9f56f27c32fb5f102083bbe418344c1a652", + "normalized_render_sha256": "5e27829f87a537e233ac1d0b2fe96cfe21ad6263c70044d8672b1f14c83e7506", + "target": "skills/qa/references/legacy/setup-browser-cookies.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "setup-browser-cookies/SKILL.md.tmpl", + "original_line_range": "1-89", + "purpose": "Import scoped test-account cookies.", + "invocation_conditions": "The user asks for evidence or findings without authorizing product-code changes.", + "modes": { + "public": "Report", + "legacy_alias": "browser-auth" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Setup Browser Cookies", + "CDP mode check", + "How it works", + "Steps", + "1. Find the browse binary", + "SETUP (run this check BEFORE any browse command)", + "2. Open the cookie picker", + "3. Direct import (alternative)", + "4. Verify", + "Notes" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/qa/references/legacy/setup-browser-cookies.md", + "parity_test": "evals/parity/contracts/setup-browser-cookies.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "pair-agent", + "tree": "qa", + "public_mode": "Report", + "legacy_mode": "browser-pair", + "source_path": "pair-agent/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "75ed42d590f99c46cd0883c37bb1f2f9f499211c", + "normalized_render_sha256": "27e34ef8e4157d94866d5f0c8ab9aff747483d86acd9702bf721cfb8962c07e5", + "target": "skills/qa/references/legacy/pair-agent.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "pair-agent/SKILL.md.tmpl", + "original_line_range": "1-268", + "purpose": "Pair a remote agent with the browser.", + "invocation_conditions": "The user asks for evidence or findings without authorizing product-code changes.", + "modes": { + "public": "Report", + "legacy_alias": "browser-pair" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/pair-agent — Share Your Browser With Another AI Agent", + "How it works", + "SETUP (run this check BEFORE any browse command)", + "Step 1: Check prerequisites", + "Step 2: Ask what they want", + "Step 3: Local or remote?", + "Step 4: Execute pairing", + "If same machine (option A):", + "If different machine (option B):", + "Step 5: Verify connection", + "What the remote agent can do", + "Troubleshooting", + "Platform-specific notes", + "OpenClaw / AlphaClaw", + "Codex", + "Cursor", + "Revoking access" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/qa/references/legacy/pair-agent.md", + "parity_test": "evals/parity/contracts/pair-agent.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "scrape", + "tree": "qa", + "public_mode": "Report", + "legacy_mode": "scrape", + "source_path": "scrape/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "4cb4f17c074edcdce0bc8d133f19a6a739964851", + "normalized_render_sha256": "bc7d6ed483f239a45d137ca790c23f3c3add4aaab028ca4950e83e25936ebc79", + "target": "skills/qa/references/legacy/scrape.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 2030 + ], + "original_source_file": "scrape/SKILL.md.tmpl", + "original_line_range": "1-153", + "purpose": "Extract structured data from a web page.", + "invocation_conditions": "The user asks for evidence or findings without authorizing product-code changes.", + "modes": { + "public": "Report", + "legacy_alias": "scrape" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/scrape — pull data from a page", + "Step 1 — Determine intent", + "Step 2 — Refuse mutating intents", + "Step 3 — Match phase", + "Step 4 — Prototype phase", + "Step 5 — Skillify nudge", + "When the prototype fails", + "What this skill does NOT do", + "Output discipline", + "Capture Learnings" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/qa/references/legacy/scrape.md", + "parity_test": "evals/parity/contracts/scrape.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "skillify", + "tree": "qa", + "public_mode": "Report", + "legacy_mode": "skillify", + "source_path": "skillify/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "21fb2f503e3d40683fa782b21abf05a8f0fef69b", + "normalized_render_sha256": "13920affe83c53e5d459a077b68433682fd6c445389bf2024d2e5f4d5a021994", + "target": "skills/qa/references/legacy/skillify.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 2030 + ], + "original_source_file": "skillify/SKILL.md.tmpl", + "original_line_range": "1-435", + "purpose": "Codify a successful scrape into a browser skill.", + "invocation_conditions": "The user asks for evidence or findings without authorizing product-code changes.", + "modes": { + "public": "Report", + "legacy_alias": "skillify" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/skillify — codify the last scrape into a permanent skill", + "Iron contract — never write a half-broken skill to disk", + "Step 1 — Provenance guard (D1)", + "Step 2 — Propose name + triggers", + "Step 3 — Synthesize script.ts (D2)", + "Step 4 — Capture the fixture", + "Step 5 — Write script.test.ts", + "Step 6 — Resolve the canonical SDK path + read it", + "Step 7 — Stage the skill (D3 atomic write)", + "Step 8 — Run $B skill test against the staged dir", + "Step 9 — Approval gate", + "Step 10 — Commit (atomic) or discard", + "Step 11 — Confirm + verify", + "Limits (be honest)", + "What this skill does NOT do", + "Capture Learnings" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/qa/references/legacy/skillify.md", + "parity_test": "evals/parity/contracts/skillify.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "benchmark-models", + "tree": "qa", + "public_mode": "Report", + "legacy_mode": "model-benchmark", + "source_path": "benchmark-models/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "034cda182406dc04a82c4336ac3ebc36b5fc41b1", + "normalized_render_sha256": "d67d1f22c7f65c286a905ec60143d057e3b8b29a548ac53a88272b886ef26b31", + "target": "skills/qa/references/legacy/benchmark-models.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "benchmark-models/SKILL.md.tmpl", + "original_line_range": "1-152", + "purpose": "Compare skill behavior across model providers.", + "invocation_conditions": "The user asks for evidence or findings without authorizing product-code changes.", + "modes": { + "public": "Report", + "legacy_alias": "model-benchmark" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/benchmark-models — Cross-Model Skill Benchmark", + "Step 0: Locate the binary", + "Step 1: Choose a prompt", + "Step 2: Choose providers", + "Step 3: Decide on judge", + "Step 4: Run the benchmark", + "Step 5: Interpret results", + "Step 6: Offer to save results", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/qa/references/legacy/benchmark-models.md", + "parity_test": "evals/parity/contracts/benchmark-models.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "investigate", + "tree": "debug", + "public_mode": "Diagnose-only", + "legacy_mode": "investigate", + "source_path": "investigate/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "67e254d743ffb9060f48e3f6d4b715c077ee688d", + "normalized_render_sha256": "23e220a2d61b665f9e48b094855336fac3ca9187be12675cb721db2bc27f7c30", + "target": "skills/debug/references/legacy/investigate.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 2030, + 2186 + ], + "original_source_file": "investigate/SKILL.md.tmpl", + "original_line_range": "1-260", + "purpose": "Prove root cause before proposing or applying a fix.", + "invocation_conditions": "The user wants root cause, reproduction, or discriminating evidence without a fix.", + "modes": { + "public": "Diagnose-only", + "legacy_alias": "investigate" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Systematic Debugging", + "Iron Law", + "Phase 1: Root Cause Investigation", + "Prior Learnings", + "Refresh learnings for the hypothesis you just named", + "Scope Lock", + "Phase 2: Pattern Analysis", + "Phase 3: Hypothesis Testing", + "Phase 4: Implementation", + "Phase 5: Verification & Report", + "Capture Learnings", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/debug/references/legacy/investigate.md", + "parity_test": "evals/parity/contracts/investigate.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "ios-fix", + "tree": "debug", + "public_mode": "Fix", + "legacy_mode": "ios-fix", + "source_path": "ios-fix/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "94655e282f535b846eada11143e95df58d29263b", + "normalized_render_sha256": "1a94ad8852821684d4806b10c5464f7adef80cb28817800f1e88dfe808f0a26d", + "target": "skills/debug/references/legacy/ios-fix.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "ios-fix/SKILL.md.tmpl", + "original_line_range": "1-102", + "purpose": "Reproduce, fix, and regression-test an iOS bug.", + "invocation_conditions": "The user authorizes a fix; root cause remains a hard prerequisite and iOS uses the device repair loop.", + "modes": { + "public": "Fix", + "legacy_alias": "ios-fix" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Autonomous iOS bug fixer", + "Iron Law", + "Phase 1: Reproduce the bug", + "Phase 2: Locate root cause", + "Phase 3: Apply fix", + "Phase 4: Verify", + "Phase 5: Add regression test", + "Failure modes" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/debug/references/legacy/ios-fix.md", + "parity_test": "evals/parity/contracts/ios-fix.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "careful", + "tree": "debug", + "public_mode": "Diagnose-only", + "legacy_mode": "careful", + "source_path": "careful/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "5c128a00e180bec4fad281486d3ca8c02dc67e7e", + "normalized_render_sha256": "9c806d1102794aeab5c83990c72dcadc7bdad7134f3962da5609ab13bc7feb0f", + "target": "skills/debug/references/legacy/careful.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "careful/SKILL.md.tmpl", + "original_line_range": "1-63", + "purpose": "Require confirmation before destructive operations.", + "invocation_conditions": "The user wants root cause, reproduction, or discriminating evidence without a fix.", + "modes": { + "public": "Diagnose-only", + "legacy_alias": "careful" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "/careful — Destructive Command Guardrails", + "What's protected", + "Safe exceptions", + "How it works" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/debug/references/legacy/careful.md", + "parity_test": "evals/parity/contracts/careful.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "freeze", + "tree": "debug", + "public_mode": "Diagnose-only", + "legacy_mode": "freeze", + "source_path": "freeze/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "c0b31aa7f9f216fc5a351d91f4bcff68c828d090", + "normalized_render_sha256": "8beec3080fd0d6566b6ecf188d110d7283fb808fbc7c7201ee234191f9d3c5cd", + "target": "skills/debug/references/legacy/freeze.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "freeze/SKILL.md.tmpl", + "original_line_range": "1-87", + "purpose": "Restrict edits to one directory.", + "invocation_conditions": "The user wants root cause, reproduction, or discriminating evidence without a fix.", + "modes": { + "public": "Diagnose-only", + "legacy_alias": "freeze" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "/freeze — Restrict Edits to a Directory", + "Setup", + "How it works", + "Notes" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/debug/references/legacy/freeze.md", + "parity_test": "evals/parity/contracts/freeze.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "guard", + "tree": "debug", + "public_mode": "Diagnose-only", + "legacy_mode": "guard", + "source_path": "guard/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "3d34ee0c181ec7b263bf6092ba8f384619c5efb6", + "normalized_render_sha256": "2040b2d9c7e587f254296abb394c655da37fe25305f4e44dc2d736053595cdfb", + "target": "skills/debug/references/legacy/guard.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "guard/SKILL.md.tmpl", + "original_line_range": "1-87", + "purpose": "Enable careful and freeze together.", + "invocation_conditions": "The user wants root cause, reproduction, or discriminating evidence without a fix.", + "modes": { + "public": "Diagnose-only", + "legacy_alias": "guard" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "/guard — Full Safety Mode", + "Setup", + "What's protected" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/debug/references/legacy/guard.md", + "parity_test": "evals/parity/contracts/guard.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "unfreeze", + "tree": "debug", + "public_mode": "Diagnose-only", + "legacy_mode": "unfreeze", + "source_path": "unfreeze/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "88e413fe5a49a45d46d8867b2d80ace30b3b45aa", + "normalized_render_sha256": "9128912f4c79a423d4e52a7a27a9c560bf7ab58e85bcf32db1442f4ded6576ae", + "target": "skills/debug/references/legacy/unfreeze.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "unfreeze/SKILL.md.tmpl", + "original_line_range": "1-45", + "purpose": "Remove the edit-directory restriction.", + "invocation_conditions": "The user wants root cause, reproduction, or discriminating evidence without a fix.", + "modes": { + "public": "Diagnose-only", + "legacy_alias": "unfreeze" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "/unfreeze — Clear Freeze Boundary", + "Clear the boundary" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/debug/references/legacy/unfreeze.md", + "parity_test": "evals/parity/contracts/unfreeze.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "review", + "tree": "review", + "public_mode": "Normal", + "legacy_mode": "diff", + "source_path": "review/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "ba1ea88068de4b09cf717eb4ae42aa247d198314", + "normalized_render_sha256": "25e07cb6ea0831bd9e7bd7d4606714ba38b743107a970f2b6491a246b90c7dd4", + "target": "skills/review/references/legacy/review.md", + "disposition": "BUG_FIX", + "overlays": [ + 610, + 645, + 679, + 2030, + 2141 + ], + "original_source_file": "review/SKILL.md.tmpl", + "original_line_range": "1-304", + "purpose": "Review a diff, validate findings, and apply safe fixes.", + "invocation_conditions": "A standard pre-landing or broad code review is requested.", + "modes": { + "public": "Normal", + "legacy_alias": "diff" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Step 0: Detect platform and base branch", + "Pre-Landing PR Review", + "Step 1: Check branch", + "Step 1.5: Scope Drift Detection", + "Plan File Discovery", + "Actionable Item Extraction", + "Verification Mode", + "Cross-Reference Against Diff", + "Output Format", + "Fallback Intent Sources (when no plan file found)", + "Investigation Depth", + "Learnings Logging (plan-file discrepancies only)", + "Integration with Scope Drift Detection", + "Step 2: Read the checklist", + "Step 2.5: Check for Greptile review comments", + "Step 3: Get the diff", + "Step 3.4: Workspace-aware queue status (advisory)", + "Step 3.5: Slop scan (advisory)", + "Prior Learnings", + "Step 4: Critical pass (core review)", + "Confidence Calibration", + "Pre-emit verification gate (#1539 — kills the \"field doesn't exist\" FP class)", + "Step 5: Fix-First Review", + "Step 5.0: Cross-review finding dedup", + "Step 5a: Classify each finding", + "Step 5b: Auto-fix all AUTO-FIX items", + "Step 5c: Batch-ask about ASK items", + "Step 5d: Apply user-approved fixes", + "Verification of claims", + "Greptile comment resolution", + "Step 5.5: TODOS cross-reference", + "Step 5.6: Documentation staleness check", + "Step 5.8: Persist Eng Review result", + "Capture Learnings", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/review/references/legacy/review.md", + "parity_test": "evals/parity/contracts/review.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "cso", + "tree": "review", + "public_mode": "Security", + "legacy_mode": "security", + "source_path": "cso/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "413fb099597b55dadca116e45a202aa693a94b74", + "normalized_render_sha256": "59017ba27aaa93a62bda7ddca3c995f7231edb3fa86009e555b724b43fc1afd7", + "target": "skills/review/references/legacy/cso.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 2030 + ], + "original_source_file": "cso/SKILL.md.tmpl", + "original_line_range": "1-408", + "purpose": "Run OWASP, STRIDE, secrets, supply-chain, and infrastructure audits.", + "invocation_conditions": "The primary risk is auth, secrets, supply chain, abuse, infrastructure, or threat modeling.", + "modes": { + "public": "Security", + "legacy_alias": "security" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/cso — Chief Security Officer Audit (v2)", + "User-invocable", + "Arguments", + "Mode Resolution", + "Important: Use the Grep tool for all code searches", + "Instructions", + "Phase 0: Architecture Mental Model + Stack Detection", + "Prior Learnings", + "Phase 1: Attack Surface Census", + "Phase 2: Secrets Archaeology", + "Phase 3: Dependency Supply Chain", + "Phase 4: CI/CD Pipeline Security", + "Phase 5: Infrastructure Shadow Surface", + "Phase 6: Webhook & Integration Audit", + "Phase 7: LLM & AI Security", + "Phase 8: Skill Supply Chain", + "Phase 9: OWASP Top 10 Assessment", + "A01: Broken Access Control", + "A02: Cryptographic Failures", + "A03: Injection", + "A04: Insecure Design", + "A05: Security Misconfiguration", + "A06: Vulnerable and Outdated Components", + "A07: Identification and Authentication Failures", + "A08: Software and Data Integrity Failures", + "A09: Security Logging and Monitoring Failures", + "A10: Server-Side Request Forgery (SSRF)", + "Phase 10: STRIDE Threat Model", + "Phase 11: Data Classification", + "Phase 12: False Positive Filtering + Active Verification", + "Phase 13: Findings Report + Trend Tracking + Remediation", + "Confidence Calibration", + "Pre-emit verification gate (#1539 — kills the \"field doesn't exist\" FP class)", + "Phase 14: Save Report", + "Capture Learnings", + "Important Rules", + "Disclaimer" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/review/references/legacy/cso.md", + "parity_test": "evals/parity/contracts/cso.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "health", + "tree": "review", + "public_mode": "Deep", + "legacy_mode": "health", + "source_path": "health/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "f92eb7347ec4f77dd8dbf464d63fcdf6a3459908", + "normalized_render_sha256": "3e478e5673d54ce0e227e589ab0800bd14de65cb8df4e12661e330b57018465c", + "target": "skills/review/references/legacy/health.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "health/SKILL.md.tmpl", + "original_line_range": "1-321", + "purpose": "Run the code-quality dashboard and trend analysis.", + "invocation_conditions": "The change warrants health evidence and every genuinely independent outside voice available.", + "modes": { + "public": "Deep", + "legacy_alias": "health" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/health -- Code Quality Dashboard", + "User-invocable", + "Step 1: Detect Health Stack", + "Step 2: Run Tools", + "Step 3: Score Each Category", + "Step 4: Present Dashboard", + "Step 5: Persist to Health History", + "Step 6: Trend Analysis + Recommendations", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/review/references/legacy/health.md", + "parity_test": "evals/parity/contracts/health.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "codex", + "tree": "review", + "public_mode": "Deep", + "legacy_mode": "outside-codex", + "source_path": "codex/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "333de7d8d590cc78184b0e2371171f6121408f73", + "normalized_render_sha256": "5621d3e33242350806eb3489b5c933c5ebaa5105f250e941c4205962c447b28d", + "target": "skills/review/references/legacy/codex.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "codex/SKILL.md.tmpl", + "original_line_range": "1-666", + "purpose": "Request an OpenAI Codex review, challenge, or consultation.", + "invocation_conditions": "The change warrants health evidence and every genuinely independent outside voice available.", + "modes": { + "public": "Deep", + "legacy_alias": "outside-codex" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Step 0: Detect platform and base branch", + "/codex — Multi-AI Second Opinion", + "Step 0.4: Check codex binary", + "Step 0.5: Auth probe + version check", + "Step 0.6: Resolve portable roots", + "Step 1: Detect mode", + "Filesystem Boundary", + "Step 2A: Review Mode", + "Plan File Review Report", + "Detect the plan file", + "Generate the report", + "GSTACK REVIEW REPORT", + "Write to the plan file", + "EXIT PLAN MODE GATE (BLOCKING)", + "Step 2B: Challenge (Adversarial) Mode", + "Step 2C: Consult Mode" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/review/references/legacy/codex.md", + "parity_test": "evals/parity/contracts/codex.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "claude", + "tree": "review", + "public_mode": "Deep", + "legacy_mode": "outside-claude", + "source_path": "claude/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "94552cbe4efebc908f70f03880e584879db80aca", + "normalized_render_sha256": "f8b5964bf630d0716ad5cfd729f6d4e62bb89d4eab64a210090fb0e875f0b59d", + "target": "skills/review/references/legacy/claude.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "claude/SKILL.md.tmpl", + "original_line_range": "1-342", + "purpose": "Request a read-only Claude outside voice.", + "invocation_conditions": "The change warrants health evidence and every genuinely independent outside voice available.", + "modes": { + "public": "Deep", + "legacy_alias": "outside-claude" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Step 0: Detect platform and base branch", + "/claude - Claude Outside Voice", + "Step 0: Check Claude CLI", + "Safety Boundary", + "Step 1: Detect Mode", + "Shared Helpers", + "Step 2A: Review Mode", + "Step 2B: Challenge Mode", + "Step 2C: Consult Mode", + "Error Handling", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/review/references/legacy/claude.md", + "parity_test": "evals/parity/contracts/claude.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "ship", + "tree": "ship", + "public_mode": "Prepare", + "legacy_mode": "ship", + "source_path": "ship/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "068ac4fe54bcb46572295d48263b11bd38fcde18", + "normalized_render_sha256": "b2f1d5bc59ec1a35fb367cc242131dc288ca1c9cf1baa8cefe9165b45f9841bc", + "target": "skills/ship/references/legacy/ship.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 884, + 2030, + 2186 + ], + "original_source_file": "ship/SKILL.md.tmpl", + "original_line_range": "1-538", + "purpose": "Test, review, version, document, commit, push, and open a PR.", + "invocation_conditions": "The work needs checks, review, release metadata, documentation, commit, push, PR creation, or queue status.", + "modes": { + "public": "Prepare", + "legacy_alias": "ship" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Step 0: Detect platform and base branch", + "Ship: Fully Automated Ship Workflow", + "Step 1: Pre-flight", + "Review Readiness Dashboard", + "Step 2: Distribution Pipeline Check", + "Step 3: Merge the base branch (BEFORE tests)", + "Step 4: Test Framework Bootstrap", + "Test Framework Bootstrap", + "B2. Research best practices", + "B3. Framework selection", + "B4. Install and configure", + "B4.5. First real tests", + "B5. Verify", + "B5.5. CI/CD pipeline", + "B6. Create TESTING.md", + "B7. Update CLAUDE.md", + "B8. Commit", + "Step 5: Run tests (on merged code)", + "Test Failure Ownership Triage", + "Step T1: Classify each failure", + "Step T2: Handle in-branch failures", + "Step T3: Handle pre-existing failures", + "Step T4: Execute the chosen action", + "Step 6: Eval Suites (conditional)", + "Step 7: Test Coverage Audit", + "Test Framework Detection", + "E2E Test Decision Matrix", + "REGRESSION RULE (mandatory)", + "Test Plan Artifact", + "Step 8: Plan Completion Audit", + "Actionable Item Extraction", + "Verification Mode", + "Cross-Reference Against Diff", + "Output Format", + "Gate Logic", + "Step 8.1: Plan Verification", + "1. Check for verification section", + "2. Check for running dev server", + "3. Invoke /qa-only inline", + "4. Gate logic", + "5. Include in PR body", + "Prior Learnings", + "Step 8.2: Scope Drift Detection", + "Step 9: Pre-Landing Review", + "Confidence Calibration", + "Pre-emit verification gate (#1539 — kills the \"field doesn't exist\" FP class)", + "Design Review (conditional, diff-scoped)", + "Step 9.3: Cross-review finding dedup", + "Step 10: Address Greptile review comments (if PR exists)", + "Capture Learnings", + "Refresh learnings for the headline feature on this branch", + "Step 12: Version bump (auto-decide)", + "Step 13: CHANGELOG (auto-generate)", + "Step 14: TODOS.md (auto-update)", + "Step 15: Commit (bisectable chunks)", + "Step 15.0: WIP Commit Squash (continuous checkpoint mode only)", + "Step 15.1: Bisectable Commits", + "Step 16: Verification Gate", + "Step 17: Push", + "Step 18: Documentation sync (via subagent, before PR creation)", + "Step 19: Create PR/MR", + "Redaction scan (PR body + title) — runs before create AND edit", + "Step 20: Persist ship metrics", + "Step 21: Plan-tune discoverability nudge (first-successful-ship only)", + "Section self-check (before you finish)", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/ship/references/legacy/ship.md", + "parity_test": "evals/parity/contracts/ship.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "land-and-deploy", + "tree": "ship", + "public_mode": "Land", + "legacy_mode": "land", + "source_path": "land-and-deploy/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "98976ad020d541d251cc7e34802a13458ddc88e2", + "normalized_render_sha256": "d17a1d9f397b57f59c5cced24c07c35e3950050612dba9c36bb68c4997f03a2f", + "target": "skills/ship/references/legacy/land-and-deploy.md", + "disposition": "BUG_FIX", + "overlays": [ + 679, + 884 + ], + "original_source_file": "land-and-deploy/SKILL.md.tmpl", + "original_line_range": "1-1009", + "purpose": "Merge an approved PR, deploy, verify, and offer rollback.", + "invocation_conditions": "The requested next irreversible stage is merge/landing.", + "modes": { + "public": "Land", + "legacy_alias": "land" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "SETUP (run this check BEFORE any browse command)", + "Step 0: Detect platform and base branch", + "/land-and-deploy — Merge, Deploy, Verify", + "User-invocable", + "Arguments", + "Non-interactive philosophy (like /ship) — with one critical gate", + "Voice & Tone", + "Step 1: Pre-flight", + "Step 1.5: First-run dry-run validation", + "1.5a: Deploy infrastructure detection", + "1.5b: Command validation", + "1.5c: Staging detection", + "1.5d: Readiness preview", + "1.5e: Dry-run confirmation", + "Step 2: Pre-merge checks", + "Step 3: Wait for CI (if pending)", + "Step 3.4: VERSION drift detection (workspace-aware ship)", + "Step 3.5: Pre-merge readiness gate", + "3.5a: Review staleness check", + "3.5a-bis: Inline review offer", + "3.5b: Test results", + "3.5c: PR body accuracy check", + "3.5d: Document-release check", + "3.5e: Readiness report and confirmation", + "Step 4: Merge the PR", + "4a-postfail: Post-failure PR-state check", + "4a: Merge queue detection and messaging", + "4b: CI auto-deploy detection", + "Step 5: Deploy strategy detection", + "5a: Staging-first option", + "Step 6: Wait for deploy (if applicable)", + "Strategy A: GitHub Actions workflow", + "Strategy B: Platform CLI (Fly.io, Render, Heroku)", + "Strategy C: Auto-deploy platforms (Vercel, Netlify)", + "Strategy D: Custom deploy hooks", + "Common: Timing and failure handling", + "Step 7: Canary verification (conditional depth)", + "Step 8: Revert (if needed)", + "Step 9: Deploy report", + "Step 10: Suggest follow-ups", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/ship/references/legacy/land-and-deploy.md", + "parity_test": "evals/parity/contracts/land-and-deploy.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "landing-report", + "tree": "ship", + "public_mode": "Prepare", + "legacy_mode": "queue", + "source_path": "landing-report/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "32a8cc1ab036b1ff8692f0400b68d8b56224a251", + "normalized_render_sha256": "64c9e05978be3c8d900dc9b9b4dd77e495776718d77e7b926ff6c5250b825a01", + "target": "skills/ship/references/legacy/landing-report.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "landing-report/SKILL.md.tmpl", + "original_line_range": "1-164", + "purpose": "Render the workspace-aware version and landing queue.", + "invocation_conditions": "The work needs checks, review, release metadata, documentation, commit, push, PR creation, or queue status.", + "modes": { + "public": "Prepare", + "legacy_alias": "queue" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "/landing-report — Version Queue Dashboard", + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Why this skill exists", + "Step 1: Detect platform and base branch", + "Step 2: Read current state", + "Step 3: Query the queue", + "Step 4: Render the dashboard", + "Step 5: Suggest next action", + "Plan Mode" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/ship/references/legacy/landing-report.md", + "parity_test": "evals/parity/contracts/landing-report.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "document-release", + "tree": "ship", + "public_mode": "Prepare", + "legacy_mode": "docs", + "source_path": "document-release/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "7621cb31290217b5c7cc8fb000e910b3dd38128f", + "normalized_render_sha256": "369c595ec2fac76f441d008401929295898e98a5c521d176bafbe4af0e6054f9", + "target": "skills/ship/references/legacy/document-release.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "document-release/SKILL.md.tmpl", + "original_line_range": "1-161", + "purpose": "Update documentation and release narrative after shipping.", + "invocation_conditions": "The work needs checks, review, release metadata, documentation, commit, push, PR creation, or queue status.", + "modes": { + "public": "Prepare", + "legacy_alias": "docs" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Step 0: Detect platform and base branch", + "Document Release: Post-Ship Documentation Update", + "Step 1: Pre-flight & Diff Analysis", + "Step 1.5: Coverage Map (Blast-Radius Analysis)", + "Step 2: Per-File Documentation Audit", + "Step 3: Apply Auto-Updates", + "Step 4: Ask About Risky/Questionable Changes", + "Step 5: CHANGELOG Voice Polish", + "Step 6: Cross-Doc Consistency & Discoverability Check", + "Step 7: TODOS.md Cleanup", + "Step 8: VERSION Bump Question", + "Step 9: Commit & Output", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/ship/references/legacy/document-release.md", + "parity_test": "evals/parity/contracts/document-release.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "setup-deploy", + "tree": "ship", + "public_mode": "Deploy", + "legacy_mode": "setup", + "source_path": "setup-deploy/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "587a993c01b6964b5437534527f25368cc265ec9", + "normalized_render_sha256": "796e0aefff64a98a33fd93028247bf76b8073121487cae13b66ad3081f551a87", + "target": "skills/ship/references/legacy/setup-deploy.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "setup-deploy/SKILL.md.tmpl", + "original_line_range": "1-226", + "purpose": "Detect and configure the deployment platform.", + "invocation_conditions": "The change is ready for deployment or deployment must first be configured.", + "modes": { + "public": "Deploy", + "legacy_alias": "setup" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "/setup-deploy — Configure Deployment for gstack", + "User-invocable", + "Instructions", + "Step 1: Check existing configuration", + "Step 2: Detect platform", + "Step 3: Platform-specific setup", + "Fly.io", + "Render", + "Vercel", + "Netlify", + "GitHub Actions only", + "Custom / Manual", + "Step 4: Write configuration", + "Step 5: Verify", + "Step 6: Summary", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/ship/references/legacy/setup-deploy.md", + "parity_test": "evals/parity/contracts/setup-deploy.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "document-generate", + "tree": "ship", + "public_mode": "Prepare", + "legacy_mode": "docs-generate", + "source_path": "document-generate/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "d3ef0cbc3786c4010b3c692fb94246f56a7e1d7b", + "normalized_render_sha256": "aa5092d5c96e73aa97bcebd200d08d2ce8abcaabae534711162d29444f780229", + "target": "skills/ship/references/legacy/document-generate.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "document-generate/SKILL.md.tmpl", + "original_line_range": "1-461", + "purpose": "Generate Diataxis documentation from code.", + "invocation_conditions": "The work needs checks, review, release metadata, documentation, commit, push, PR creation, or queue status.", + "modes": { + "public": "Prepare", + "legacy_alias": "docs-generate" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Step 0: Detect platform and base branch", + "Document Generate: Diataxis Documentation Writer", + "Step 0: Scope & Intent", + "Step 1: Codebase Archaeology (Research Phase)", + "Step 2: Diataxis Partitioning", + "Step 3: Write Reference Documentation First", + "Step 4: Write Explanation Documentation", + "Step 5: Write How-To Guides", + "Step 6: Write Tutorials", + "Step 7: Cross-Document Linking & Discoverability", + "Step 8: Quality Self-Review", + "Step 9: Commit & Output", + "Important Rules" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/ship/references/legacy/document-generate.md", + "parity_test": "evals/parity/contracts/document-generate.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "gstack-upgrade", + "tree": "ship", + "public_mode": "Prepare", + "legacy_mode": "upgrade", + "source_path": "gstack-upgrade/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "5402a1da3c857cbf50668085fce53172b72bba0d", + "normalized_render_sha256": "a913cf77f76c4d68c576a06190b498e3d8d3b60b85498a68f173b23a7f800828", + "target": "skills/ship/references/legacy/gstack-upgrade.md", + "disposition": "DUPLICATE_INFRASTRUCTURE", + "overlays": [ + 679 + ], + "original_source_file": "gstack-upgrade/SKILL.md.tmpl", + "original_line_range": "1-282", + "purpose": "Upgrade gstack and run migrations.", + "invocation_conditions": "The work needs checks, review, release metadata, documentation, commit, push, PR creation, or queue status.", + "modes": { + "public": "Prepare", + "legacy_alias": "upgrade" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "/gstack-upgrade", + "Inline upgrade flow", + "Step 1: Ask the user (or auto-upgrade)", + "Step 2: Detect install type", + "Step 3: Save old version", + "Step 4: Upgrade", + "Step 4.5: Handle local vendored copy", + "Step 4.75: Run version migrations", + "Step 5: Write marker + clear cache", + "Step 6: Show What's New", + "Step 7: Continue", + "Standalone usage" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/ship/references/legacy/gstack-upgrade.md", + "parity_test": "evals/parity/contracts/gstack-upgrade.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "ios-clean", + "tree": "ship", + "public_mode": "Prepare", + "legacy_mode": "ios-clean", + "source_path": "ios-clean/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "3a64481a99fab0d7247c23df0a07c428c1c5f3da", + "normalized_render_sha256": "4616b4a2f3def37440add4010a89426e85bd3f2786fd71d199063a60ce073615", + "target": "skills/ship/references/legacy/ios-clean.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "ios-clean/SKILL.md.tmpl", + "original_line_range": "1-105", + "purpose": "Remove debug bridge wiring before release.", + "invocation_conditions": "The work needs checks, review, release metadata, documentation, commit, push, PR creation, or queue status.", + "modes": { + "public": "Prepare", + "legacy_alias": "ios-clean" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Strip the DebugBridge from an iOS app", + "What it removes", + "What it does NOT touch", + "Phase 1: Inventory", + "Phase 2: Remove", + "Phase 3: Verify", + "Reversibility" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/ship/references/legacy/ios-clean.md", + "parity_test": "evals/parity/contracts/ios-clean.json + scripts/gstack2/run-parity.ts normalized full-body equality" + }, + { + "source": "ios-sync", + "tree": "ship", + "public_mode": "Prepare", + "legacy_mode": "ios-sync", + "source_path": "ios-sync/SKILL.md.tmpl", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "156a33c4c35d3bad804e44c93ae4c931878489f3", + "normalized_render_sha256": "6d1fa485d589dff65412cdd855b683f09cb442e35b8a40ee0db3451241016ea9", + "target": "skills/ship/references/legacy/ios-sync.md", + "disposition": "BUG_FIX", + "overlays": [ + 679 + ], + "original_source_file": "ios-sync/SKILL.md.tmpl", + "original_line_range": "1-96", + "purpose": "Refresh iOS debug bridge templates.", + "invocation_conditions": "The work needs checks, review, release metadata, documentation, commit, push, PR creation, or queue status.", + "modes": { + "public": "Prepare", + "legacy_alias": "ios-sync" + }, + "question_sequence": "Preserve the source workflow order; gather prerequisites before consequential questions.", + "follow_up_behavior": "The complete source follow-up sequence is preserved verbatim inside new_location and hash-compared to the pinned base.", + "smart_skip_rules": "Skip only when the source condition is false, and name every skipped module with evidence.", + "pushback_rules": "Preserve the source forcing questions, recommendation pressure, and one-question-at-a-time cadence.", + "stop_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "approval_gates": "Preserve every STOP, hard gate, approval boundary, and no-mutation-before-approval rule.", + "rubrics_and_scoring": "All rubric names, dimensions, anchors, and scoring rules remain verbatim in new_location.", + "cognitive_frameworks": [ + "Preamble (run first)", + "Plan Mode Safe Operations", + "Skill Invocation During Plan Mode", + "First-run guidance (one-time)", + "AskUserQuestion Format", + "Tool resolution (read first)", + "When AskUserQuestion is unavailable or a call fails", + "Format", + "Handling 5+ options — split, never drop", + "Self-check before emitting", + "Artifacts Sync (skill start)", + "Model-Specific Behavioral Patch (claude)", + "Voice", + "Context Recovery", + "Writing Style (skip entirely if EXPLAIN_LEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)", + "Completeness Principle — Boil the Ocean", + "Confusion Protocol", + "Continuous Checkpoint Mode", + "Context Health (soft directive)", + "Question Tuning (skip entirely if QUESTION_TUNING: false)", + "Repo Ownership — See Something, Say Something", + "Search Before Building", + "Completion Status Protocol", + "Operational Self-Improvement", + "Telemetry (run last)", + "Plan Status Footer", + "Resync the iOS debug bridge", + "Phase 1: Detect installed version", + "Phase 2: Regenerate codegen output", + "Phase 3: Update templated Swift files in place", + "Phase 4: Verify", + "Failure modes" + ], + "evidence_requirements": "Ground conclusions in inspected code, commands, browser/device observations, or source artifacts.", + "artifacts_produced": "Produce every report, plan, log, screenshot, manifest, or handoff required by the source.", + "mutation_authority": "Use the source mutation boundary; never broaden writes, commits, pushes, merges, or deploys.", + "exit_states": "Preserve source completion checks, unresolved-decision reporting, and explicit blocked exits.", + "voice": "Direct builder voice; match the user language and retain source-specific tone constraints.", + "response_posture": "Direct, evidence-first builder language; preserve source-specific recommendations and constructive pressure.", + "new_location": "skills/ship/references/legacy/ios-sync.md", + "parity_test": "evals/parity/contracts/ios-sync.json + scripts/gstack2/run-parity.ts normalized full-body equality" + } + ], + "sections": [ + { + "source_path": "cso/sections/audit-phases.md.tmpl", + "parent_source": "cso", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "e2e9db0a7688ee80e2f82d55eb73633e6c038375", + "normalized_render_sha256": "c38fd2a45788de0fefde11f46b5defc8e389a466baaefa49c81f250ee16d7a31", + "ported_render_sha256": "3cdacdfacc9cd3b494cfa89613ad74c7702c2f3ed10dbd88ed66bf1220f04260", + "target": "skills/review/references/sections/cso/audit-phases.md", + "inlined_module_target": "skills/review/references/legacy/cso.md", + "packaged_targets": [ + "skills/review/references/sections/cso/audit-phases.md" + ], + "disposition": "MECHANICAL_PORT", + "original_source_file": "cso/sections/audit-phases.md.tmpl", + "original_line_range": "1-252", + "purpose": "Carved specialist section from cso, mechanically inlined into its preserved module.", + "invocation_conditions": "Loaded only when the parent cso workflow reaches this carved section.", + "modes": { + "parent": "cso" + }, + "question_sequence": "Preserved verbatim in the inlined section.", + "follow_up_behavior": "Preserved verbatim in the inlined section.", + "smart_skip_rules": "Inherited unchanged from the parent specialist workflow.", + "pushback_rules": "Inherited unchanged from the parent specialist workflow.", + "stop_gates": "Inherited unchanged from the parent specialist workflow.", + "approval_gates": "Inherited unchanged from the parent specialist workflow.", + "rubrics_and_scoring": "Preserved verbatim in the inlined section.", + "cognitive_frameworks": [ + "Phase 2: Secrets Archaeology", + "Phase 3: Dependency Supply Chain", + "Phase 4: CI/CD Pipeline Security", + "Phase 5: Infrastructure Shadow Surface", + "Phase 6: Webhook & Integration Audit", + "Phase 7: LLM & AI Security", + "Phase 8: Skill Supply Chain", + "Phase 9: OWASP Top 10 Assessment", + "A01: Broken Access Control", + "A02: Cryptographic Failures", + "A03: Injection", + "A04: Insecure Design", + "A05: Security Misconfiguration", + "A06: Vulnerable and Outdated Components", + "A07: Identification and Authentication Failures", + "A08: Software and Data Integrity Failures", + "A09: Security Logging and Monitoring Failures", + "A10: Server-Side Request Forgery (SSRF)", + "Phase 10: STRIDE Threat Model", + "Phase 11: Data Classification" + ], + "evidence_requirements": "Inherited unchanged from the parent specialist workflow.", + "artifacts_produced": "Inherited unchanged from the parent specialist workflow.", + "mutation_authority": "Inherited unchanged from the parent specialist workflow.", + "exit_states": "Inherited unchanged from the parent specialist workflow.", + "voice": "Inherited unchanged from the parent specialist workflow.", + "response_posture": "Inherited unchanged from the parent specialist workflow.", + "new_location": "skills/review/references/sections/cso/audit-phases.md", + "parity_test": "scripts/gstack2/run-parity.ts exact packaged-section, inline inclusion, and Git-blob checks" + }, + { + "source_path": "design-consultation/sections/proposal-and-preview.md.tmpl", + "parent_source": "design-consultation", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "5d2d13a7024365d24f926cc49e99f3a980d57059", + "normalized_render_sha256": "232f019dead6cb913c6b0845f265fd9993383a05147ac4260369853053492d8b", + "ported_render_sha256": "2ca1a8fff531a5ff46c16b786eb139c31994a874f24d47d8f8bb8b4e8771f0b5", + "target": "skills/design/references/sections/design-consultation/proposal-and-preview.md", + "inlined_module_target": "skills/design/references/legacy/design-consultation.md", + "packaged_targets": [ + "skills/design/references/sections/design-consultation/proposal-and-preview.md" + ], + "disposition": "MECHANICAL_PORT", + "original_source_file": "design-consultation/sections/proposal-and-preview.md.tmpl", + "original_line_range": "1-295", + "purpose": "Carved specialist section from design-consultation, mechanically inlined into its preserved module.", + "invocation_conditions": "Loaded only when the parent design-consultation workflow reaches this carved section.", + "modes": { + "parent": "design-consultation" + }, + "question_sequence": "Preserved verbatim in the inlined section.", + "follow_up_behavior": "Preserved verbatim in the inlined section.", + "smart_skip_rules": "Inherited unchanged from the parent specialist workflow.", + "pushback_rules": "Inherited unchanged from the parent specialist workflow.", + "stop_gates": "Inherited unchanged from the parent specialist workflow.", + "approval_gates": "Inherited unchanged from the parent specialist workflow.", + "rubrics_and_scoring": "Preserved verbatim in the inlined section.", + "cognitive_frameworks": [ + "Phase 3: The Complete Proposal", + "Your Design Knowledge (use to inform proposals — do NOT display as tables)", + "Coherence Validation", + "Phase 4: Drill-downs (only if user requests adjustments)", + "Phase 5: Design System Preview (default ON)", + "Path A: AI Mockups (if DESIGN_READY)", + "Comparison Board + Feedback Loop", + "Path B: HTML Preview Page (fallback if DESIGN_NOT_AVAILABLE)", + "Preview Page Requirements (Path B only)", + "Phase 6: Write DESIGN.md & Confirm" + ], + "evidence_requirements": "Inherited unchanged from the parent specialist workflow.", + "artifacts_produced": "Inherited unchanged from the parent specialist workflow.", + "mutation_authority": "Inherited unchanged from the parent specialist workflow.", + "exit_states": "Inherited unchanged from the parent specialist workflow.", + "voice": "Inherited unchanged from the parent specialist workflow.", + "response_posture": "Inherited unchanged from the parent specialist workflow.", + "new_location": "skills/design/references/sections/design-consultation/proposal-and-preview.md", + "parity_test": "scripts/gstack2/run-parity.ts exact packaged-section, inline inclusion, and Git-blob checks" + }, + { + "source_path": "document-release/sections/release-body.md.tmpl", + "parent_source": "document-release", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "475e8b258ae06c1ddc2269275a5d85e2dc09eddf", + "normalized_render_sha256": "68c4d42fce344fc9d834e1cd2bbe21dea119d416668ebb32ebe9e7c52b130f32", + "ported_render_sha256": "18629e13adba829b14ace992e523431733b1b383863fefff640a1c53dbe34fbe", + "target": "skills/ship/references/sections/document-release/release-body.md", + "inlined_module_target": "skills/ship/references/legacy/document-release.md", + "packaged_targets": [ + "skills/ship/references/sections/document-release/release-body.md" + ], + "disposition": "MECHANICAL_PORT", + "original_source_file": "document-release/sections/release-body.md.tmpl", + "original_line_range": "1-363", + "purpose": "Carved specialist section from document-release, mechanically inlined into its preserved module.", + "invocation_conditions": "Loaded only when the parent document-release workflow reaches this carved section.", + "modes": { + "parent": "document-release" + }, + "question_sequence": "Preserved verbatim in the inlined section.", + "follow_up_behavior": "Preserved verbatim in the inlined section.", + "smart_skip_rules": "Inherited unchanged from the parent specialist workflow.", + "pushback_rules": "Inherited unchanged from the parent specialist workflow.", + "stop_gates": "Inherited unchanged from the parent specialist workflow.", + "approval_gates": "Inherited unchanged from the parent specialist workflow.", + "rubrics_and_scoring": "Preserved verbatim in the inlined section.", + "cognitive_frameworks": [ + "Step 2: Per-File Documentation Audit", + "Step 3: Apply Auto-Updates", + "Step 4: Ask About Risky/Questionable Changes", + "Step 5: CHANGELOG Voice Polish", + "Step 6: Cross-Doc Consistency & Discoverability Check", + "Step 7: TODOS.md Cleanup", + "Step 8: VERSION Bump Question", + "Step 9: Commit & Output" + ], + "evidence_requirements": "Inherited unchanged from the parent specialist workflow.", + "artifacts_produced": "Inherited unchanged from the parent specialist workflow.", + "mutation_authority": "Inherited unchanged from the parent specialist workflow.", + "exit_states": "Inherited unchanged from the parent specialist workflow.", + "voice": "Inherited unchanged from the parent specialist workflow.", + "response_posture": "Inherited unchanged from the parent specialist workflow.", + "new_location": "skills/ship/references/sections/document-release/release-body.md", + "parity_test": "scripts/gstack2/run-parity.ts exact packaged-section, inline inclusion, and Git-blob checks" + }, + { + "source_path": "office-hours/sections/design-and-handoff.md.tmpl", + "parent_source": "office-hours", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "a8f8c5aac4b39b87d222c25201475b5f1ab9bf15", + "normalized_render_sha256": "ca4ffc09d9515971a9c116e3acf12ae7d6ab2b93c79da0e69ac5f5105b4527b5", + "ported_render_sha256": "8ff3b11362cb41ca336651af3a2bb2561a2f788fac59fbb59d41ed41925a859f", + "target": "skills/plan/references/sections/office-hours/design-and-handoff.md", + "inlined_module_target": "skills/plan/references/legacy/office-hours.md", + "packaged_targets": [ + "skills/plan/references/sections/office-hours/design-and-handoff.md" + ], + "disposition": "MECHANICAL_PORT", + "original_source_file": "office-hours/sections/design-and-handoff.md.tmpl", + "original_line_range": "1-474", + "purpose": "Carved specialist section from office-hours, mechanically inlined into its preserved module.", + "invocation_conditions": "Loaded only when the parent office-hours workflow reaches this carved section.", + "modes": { + "parent": "office-hours" + }, + "question_sequence": "Preserved verbatim in the inlined section.", + "follow_up_behavior": "Preserved verbatim in the inlined section.", + "smart_skip_rules": "Inherited unchanged from the parent specialist workflow.", + "pushback_rules": "Inherited unchanged from the parent specialist workflow.", + "stop_gates": "Inherited unchanged from the parent specialist workflow.", + "approval_gates": "Inherited unchanged from the parent specialist workflow.", + "rubrics_and_scoring": "Preserved verbatim in the inlined section.", + "cognitive_frameworks": [ + "Phase 5: Design Doc", + "Startup mode design doc template:", + "Builder mode design doc template:", + "Spec Review Loop", + "Brain Calibration Write-Back (Phase 2 / gated)", + "Brain Cache Background Refresh", + "Phase 6: Handoff — The Relationship Closing", + "Step 1: Read Builder Profile", + "Step 2: Follow the Tier Path", + "If TIER = introduction (first session)", + "If TIER = welcome_back (sessions 2-3)", + "If TIER = regular (sessions 4-7)", + "If TIER = inner_circle (sessions 8+)", + "Founder Resources (all tiers)", + "Next-skill recommendations — hand the user into the loop" + ], + "evidence_requirements": "Inherited unchanged from the parent specialist workflow.", + "artifacts_produced": "Inherited unchanged from the parent specialist workflow.", + "mutation_authority": "Inherited unchanged from the parent specialist workflow.", + "exit_states": "Inherited unchanged from the parent specialist workflow.", + "voice": "Inherited unchanged from the parent specialist workflow.", + "response_posture": "Inherited unchanged from the parent specialist workflow.", + "new_location": "skills/plan/references/sections/office-hours/design-and-handoff.md", + "parity_test": "scripts/gstack2/run-parity.ts exact packaged-section, inline inclusion, and Git-blob checks" + }, + { + "source_path": "plan-ceo-review/sections/review-sections.md.tmpl", + "parent_source": "plan-ceo-review", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "73262a9588ebe94532e1bd10505d8ea49fdb57dc", + "normalized_render_sha256": "5df219bd5d3f838021964cf93170feddf1564b90894424de51931e2de184f444", + "ported_render_sha256": "0e0b90a422094f019e42f90be5bc4bc2aa6469449fd4a08e7a33d6883ac12c79", + "target": "skills/plan/references/sections/plan-ceo-review/review-sections.md", + "inlined_module_target": "skills/plan/references/legacy/plan-ceo-review.md", + "packaged_targets": [ + "skills/plan/references/sections/plan-ceo-review/review-sections.md" + ], + "disposition": "MECHANICAL_PORT", + "original_source_file": "plan-ceo-review/sections/review-sections.md.tmpl", + "original_line_range": "1-493", + "purpose": "Carved specialist section from plan-ceo-review, mechanically inlined into its preserved module.", + "invocation_conditions": "Loaded only when the parent plan-ceo-review workflow reaches this carved section.", + "modes": { + "parent": "plan-ceo-review" + }, + "question_sequence": "Preserved verbatim in the inlined section.", + "follow_up_behavior": "Preserved verbatim in the inlined section.", + "smart_skip_rules": "Inherited unchanged from the parent specialist workflow.", + "pushback_rules": "Inherited unchanged from the parent specialist workflow.", + "stop_gates": "Inherited unchanged from the parent specialist workflow.", + "approval_gates": "Inherited unchanged from the parent specialist workflow.", + "rubrics_and_scoring": "Preserved verbatim in the inlined section.", + "cognitive_frameworks": [ + "Review Sections (11 sections, after scope and mode are agreed)", + "Section 1: Architecture Review", + "Section 2: Error & Rescue Map", + "Section 3: Security & Threat Model", + "Section 4: Data Flow & Interaction Edge Cases", + "Section 5: Code Quality Review", + "Section 6: Test Review", + "Section 7: Performance Review", + "Section 8: Observability & Debuggability Review", + "Section 9: Deployment & Rollout Review", + "Section 10: Long-Term Trajectory Review", + "Section 11: Design & UX Review (skip if no UI scope detected)", + "Outside Voice Integration Rule", + "Post-Implementation Design Audit (if UI scope detected)", + "CRITICAL RULE — How to ask questions", + "Required Outputs", + "\"NOT in scope\" section", + "\"What already exists\" section", + "\"Dream state delta\" section", + "Error & Rescue Registry (from Section 2)", + "Failure Modes Registry", + "TODOS.md updates", + "Scope Expansion Decisions (EXPANSION and SELECTIVE EXPANSION only)", + "Diagrams (mandatory, produce all that apply)", + "Stale Diagram Audit", + "Implementation Tasks", + "Markdown section (always emit)", + "JSONL artifact (always write, even if zero tasks)", + "Completion Summary", + "Unresolved Decisions", + "Handoff Note Cleanup", + "Review Log", + "Review Readiness Dashboard", + "Plan File Review Report", + "Detect the plan file", + "Generate the report", + "GSTACK REVIEW REPORT", + "Write to the plan file", + "Next Steps — Review Chaining", + "docs/designs Promotion (EXPANSION and SELECTIVE EXPANSION only)", + "Formatting Rules", + "Capture Learnings", + "Brain Calibration Write-Back (Phase 2 / gated)", + "Brain Cache Background Refresh", + "Mode Quick Reference" + ], + "evidence_requirements": "Inherited unchanged from the parent specialist workflow.", + "artifacts_produced": "Inherited unchanged from the parent specialist workflow.", + "mutation_authority": "Inherited unchanged from the parent specialist workflow.", + "exit_states": "Inherited unchanged from the parent specialist workflow.", + "voice": "Inherited unchanged from the parent specialist workflow.", + "response_posture": "Inherited unchanged from the parent specialist workflow.", + "new_location": "skills/plan/references/sections/plan-ceo-review/review-sections.md", + "parity_test": "scripts/gstack2/run-parity.ts exact packaged-section, inline inclusion, and Git-blob checks" + }, + { + "source_path": "plan-design-review/sections/review-sections.md.tmpl", + "parent_source": "plan-design-review", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "8b9c0c4bc37bf056319fdfa5e6e64df7e2c63232", + "normalized_render_sha256": "f70fee1c656304193e213adb3aa12b882f4b4841826652fc7df4defcd00994f9", + "ported_render_sha256": "6768a45e4f168bac7fb9af348cf221fec54bf55465c545577893415849c35ea8", + "target": "skills/design/references/sections/plan-design-review/review-sections.md", + "inlined_module_target": "skills/design/references/legacy/plan-design-review.md", + "packaged_targets": [ + "skills/design/references/sections/plan-design-review/review-sections.md", + "skills/plan/references/sections/plan-design-review/review-sections.md" + ], + "disposition": "MECHANICAL_PORT", + "original_source_file": "plan-design-review/sections/review-sections.md.tmpl", + "original_line_range": "1-224", + "purpose": "Carved specialist section from plan-design-review, mechanically inlined into its preserved module.", + "invocation_conditions": "Loaded only when the parent plan-design-review workflow reaches this carved section.", + "modes": { + "parent": "plan-design-review" + }, + "question_sequence": "Preserved verbatim in the inlined section.", + "follow_up_behavior": "Preserved verbatim in the inlined section.", + "smart_skip_rules": "Inherited unchanged from the parent specialist workflow.", + "pushback_rules": "Inherited unchanged from the parent specialist workflow.", + "stop_gates": "Inherited unchanged from the parent specialist workflow.", + "approval_gates": "Inherited unchanged from the parent specialist workflow.", + "rubrics_and_scoring": "Preserved verbatim in the inlined section.", + "cognitive_frameworks": [ + "Review Sections (7 passes, after scope is agreed)", + "Prior Learnings", + "Pass 1: Information Architecture", + "Pass 2: Interaction State Coverage", + "Pass 3: User Journey & Emotional Arc", + "Pass 4: AI Slop Risk", + "Design Hard Rules", + "Pass 5: Design System Alignment", + "Pass 6: Responsive & Accessibility", + "Pass 7: Unresolved Design Decisions", + "Post-Pass: Update Mockups (if generated)", + "CRITICAL RULE — How to ask questions", + "Required Outputs", + "\"NOT in scope\" section", + "\"What already exists\" section", + "TODOS.md updates", + "Implementation Tasks", + "Markdown section (always emit)", + "JSONL artifact (always write, even if zero tasks)", + "Completion Summary", + "Unresolved Decisions", + "Approved Mockups", + "Review Log", + "Review Readiness Dashboard", + "Plan File Review Report", + "Detect the plan file", + "Generate the report", + "GSTACK REVIEW REPORT", + "Write to the plan file", + "Capture Learnings", + "Brain Calibration Write-Back (Phase 2 / gated)", + "Brain Cache Background Refresh", + "Next Steps — Review Chaining", + "Formatting Rules" + ], + "evidence_requirements": "Inherited unchanged from the parent specialist workflow.", + "artifacts_produced": "Inherited unchanged from the parent specialist workflow.", + "mutation_authority": "Inherited unchanged from the parent specialist workflow.", + "exit_states": "Inherited unchanged from the parent specialist workflow.", + "voice": "Inherited unchanged from the parent specialist workflow.", + "response_posture": "Inherited unchanged from the parent specialist workflow.", + "new_location": "skills/design/references/sections/plan-design-review/review-sections.md", + "parity_test": "scripts/gstack2/run-parity.ts exact packaged-section, inline inclusion, and Git-blob checks" + }, + { + "source_path": "plan-devex-review/sections/review-sections.md.tmpl", + "parent_source": "plan-devex-review", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "eca5dbccaab17ef1f1ecd6b624df6762b8e596fe", + "normalized_render_sha256": "4567898687b5b4566e5566735e86e0a71db1e6d69e1b55006d599794401f89aa", + "ported_render_sha256": "9be109595821a4674f116c79060bc65d87606c3c07c31c4cd014040f3e802676", + "target": "skills/plan/references/sections/plan-devex-review/review-sections.md", + "inlined_module_target": "skills/plan/references/legacy/plan-devex-review.md", + "packaged_targets": [ + "skills/plan/references/sections/plan-devex-review/review-sections.md" + ], + "disposition": "MECHANICAL_PORT", + "original_source_file": "plan-devex-review/sections/review-sections.md.tmpl", + "original_line_range": "1-403", + "purpose": "Carved specialist section from plan-devex-review, mechanically inlined into its preserved module.", + "invocation_conditions": "Loaded only when the parent plan-devex-review workflow reaches this carved section.", + "modes": { + "parent": "plan-devex-review" + }, + "question_sequence": "Preserved verbatim in the inlined section.", + "follow_up_behavior": "Preserved verbatim in the inlined section.", + "smart_skip_rules": "Inherited unchanged from the parent specialist workflow.", + "pushback_rules": "Inherited unchanged from the parent specialist workflow.", + "stop_gates": "Inherited unchanged from the parent specialist workflow.", + "approval_gates": "Inherited unchanged from the parent specialist workflow.", + "rubrics_and_scoring": "Preserved verbatim in the inlined section.", + "cognitive_frameworks": [ + "Review Sections (8 passes, after Step 0 is complete)", + "Prior Learnings", + "DX Trend Check", + "Pass 1: Getting Started Experience (Zero Friction)", + "Pass 2: API/CLI/SDK Design (Usable + Useful)", + "Pass 3: Error Messages & Debugging (Fight Uncertainty)", + "Pass 4: Documentation & Learning (Findable + Learn by Doing)", + "Pass 5: Upgrade & Migration Path (Credible)", + "Pass 6: Developer Environment & Tooling (Valuable + Accessible)", + "Pass 7: Community & Ecosystem (Findable + Desirable)", + "Pass 8: DX Measurement & Feedback Loops (Implement + Refine)", + "Appendix: Claude Code Skill DX Checklist", + "CRITICAL RULE — How to ask questions", + "Required Outputs", + "Developer Persona Card", + "Developer Empathy Narrative", + "Competitive DX Benchmark", + "Magical Moment Specification", + "Developer Journey Map", + "First-Time Developer Confusion Report", + "\"NOT in scope\" section", + "\"What already exists\" section", + "TODOS.md updates", + "DX Scorecard", + "DX Implementation Checklist", + "Implementation Tasks", + "Markdown section (always emit)", + "JSONL artifact (always write, even if zero tasks)", + "Unresolved Decisions", + "Review Log", + "Review Readiness Dashboard", + "Plan File Review Report", + "Detect the plan file", + "Generate the report", + "GSTACK REVIEW REPORT", + "Write to the plan file", + "Capture Learnings", + "Brain Calibration Write-Back (Phase 2 / gated)", + "Brain Cache Background Refresh", + "Next Steps — Review Chaining", + "Mode Quick Reference", + "Formatting Rules" + ], + "evidence_requirements": "Inherited unchanged from the parent specialist workflow.", + "artifacts_produced": "Inherited unchanged from the parent specialist workflow.", + "mutation_authority": "Inherited unchanged from the parent specialist workflow.", + "exit_states": "Inherited unchanged from the parent specialist workflow.", + "voice": "Inherited unchanged from the parent specialist workflow.", + "response_posture": "Inherited unchanged from the parent specialist workflow.", + "new_location": "skills/plan/references/sections/plan-devex-review/review-sections.md", + "parity_test": "scripts/gstack2/run-parity.ts exact packaged-section, inline inclusion, and Git-blob checks" + }, + { + "source_path": "plan-eng-review/sections/review-sections.md.tmpl", + "parent_source": "plan-eng-review", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "64562a6b1ff51a9c528d34aef1a7447e18576c13", + "normalized_render_sha256": "780b427bfd6b28886538f8eccbfed8f600cf532fc102d81f7499f37469dcb61d", + "ported_render_sha256": "dadb7aede4f2fc530e45be2df1c147375acec488d9861b6ac6ace9aacc1d5d43", + "target": "skills/plan/references/sections/plan-eng-review/review-sections.md", + "inlined_module_target": "skills/plan/references/legacy/plan-eng-review.md", + "packaged_targets": [ + "skills/plan/references/sections/plan-eng-review/review-sections.md" + ], + "disposition": "MECHANICAL_PORT", + "original_source_file": "plan-eng-review/sections/review-sections.md.tmpl", + "original_line_range": "1-227", + "purpose": "Carved specialist section from plan-eng-review, mechanically inlined into its preserved module.", + "invocation_conditions": "Loaded only when the parent plan-eng-review workflow reaches this carved section.", + "modes": { + "parent": "plan-eng-review" + }, + "question_sequence": "Preserved verbatim in the inlined section.", + "follow_up_behavior": "Preserved verbatim in the inlined section.", + "smart_skip_rules": "Inherited unchanged from the parent specialist workflow.", + "pushback_rules": "Inherited unchanged from the parent specialist workflow.", + "stop_gates": "Inherited unchanged from the parent specialist workflow.", + "approval_gates": "Inherited unchanged from the parent specialist workflow.", + "rubrics_and_scoring": "Preserved verbatim in the inlined section.", + "cognitive_frameworks": [ + "Review Sections (after scope is agreed)", + "Prior Learnings", + "1. Architecture review", + "Confidence Calibration", + "Pre-emit verification gate (#1539 — kills the \"field doesn't exist\" FP class)", + "2. Code quality review", + "3. Test review", + "Test Framework Detection", + "E2E Test Decision Matrix", + "REGRESSION RULE (mandatory)", + "Test Plan Artifact", + "4. Performance review", + "Outside Voice Integration Rule", + "CRITICAL RULE — How to ask questions", + "Required outputs", + "\"NOT in scope\" section", + "\"What already exists\" section", + "TODOS.md updates", + "Diagrams", + "Failure modes", + "Worktree parallelization strategy", + "Implementation Tasks", + "Markdown section (always emit)", + "JSONL artifact (always write, even if zero tasks)", + "Completion summary", + "Retrospective learning", + "Formatting rules", + "Review Log", + "Review Readiness Dashboard", + "Plan File Review Report", + "Detect the plan file", + "Generate the report", + "GSTACK REVIEW REPORT", + "Write to the plan file", + "Capture Learnings", + "Brain Calibration Write-Back (Phase 2 / gated)", + "Brain Cache Background Refresh", + "Next Steps — Review Chaining", + "Unresolved decisions" + ], + "evidence_requirements": "Inherited unchanged from the parent specialist workflow.", + "artifacts_produced": "Inherited unchanged from the parent specialist workflow.", + "mutation_authority": "Inherited unchanged from the parent specialist workflow.", + "exit_states": "Inherited unchanged from the parent specialist workflow.", + "voice": "Inherited unchanged from the parent specialist workflow.", + "response_posture": "Inherited unchanged from the parent specialist workflow.", + "new_location": "skills/plan/references/sections/plan-eng-review/review-sections.md", + "parity_test": "scripts/gstack2/run-parity.ts exact packaged-section, inline inclusion, and Git-blob checks" + }, + { + "source_path": "ship/sections/adversarial.md.tmpl", + "parent_source": "ship", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "9edb22c9291fde2cc01c0c7eefcd3b033f2dfd29", + "normalized_render_sha256": "c3ee106fbb6513ae45ddf0cb9498ad72a63f6b63c1af6807420d7ee7cf3abc80", + "ported_render_sha256": "80c5b8c8b833e895479360ade3227a956ea2eba41c183840f163064e9d35dc5b", + "target": "skills/ship/references/sections/ship/adversarial.md", + "inlined_module_target": "skills/ship/references/legacy/ship.md", + "packaged_targets": [ + "skills/ship/references/sections/ship/adversarial.md" + ], + "disposition": "MECHANICAL_PORT", + "original_source_file": "ship/sections/adversarial.md.tmpl", + "original_line_range": "1-20", + "purpose": "Carved specialist section from ship, mechanically inlined into its preserved module.", + "invocation_conditions": "Loaded only when the parent ship workflow reaches this carved section.", + "modes": { + "parent": "ship" + }, + "question_sequence": "Preserved verbatim in the inlined section.", + "follow_up_behavior": "Preserved verbatim in the inlined section.", + "smart_skip_rules": "Inherited unchanged from the parent specialist workflow.", + "pushback_rules": "Inherited unchanged from the parent specialist workflow.", + "stop_gates": "Inherited unchanged from the parent specialist workflow.", + "approval_gates": "Inherited unchanged from the parent specialist workflow.", + "rubrics_and_scoring": "Preserved verbatim in the inlined section.", + "cognitive_frameworks": [ + "Capture Learnings", + "Refresh learnings for the headline feature on this branch" + ], + "evidence_requirements": "Inherited unchanged from the parent specialist workflow.", + "artifacts_produced": "Inherited unchanged from the parent specialist workflow.", + "mutation_authority": "Inherited unchanged from the parent specialist workflow.", + "exit_states": "Inherited unchanged from the parent specialist workflow.", + "voice": "Inherited unchanged from the parent specialist workflow.", + "response_posture": "Inherited unchanged from the parent specialist workflow.", + "new_location": "skills/ship/references/sections/ship/adversarial.md", + "parity_test": "scripts/gstack2/run-parity.ts exact packaged-section, inline inclusion, and Git-blob checks" + }, + { + "source_path": "ship/sections/changelog.md.tmpl", + "parent_source": "ship", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "066c1d1b302176ff84126d3cfefaf722acf35bf1", + "normalized_render_sha256": "e84b0e33f0dab6bef8cc66b8088630dbfa2d1868bd02c2c938ebfe3cccaeb970", + "ported_render_sha256": "e84b0e33f0dab6bef8cc66b8088630dbfa2d1868bd02c2c938ebfe3cccaeb970", + "target": "skills/ship/references/sections/ship/changelog.md", + "inlined_module_target": "skills/ship/references/legacy/ship.md", + "packaged_targets": [ + "skills/ship/references/sections/ship/changelog.md" + ], + "disposition": "MECHANICAL_PORT", + "original_source_file": "ship/sections/changelog.md.tmpl", + "original_line_range": "1-4", + "purpose": "Carved specialist section from ship, mechanically inlined into its preserved module.", + "invocation_conditions": "Loaded only when the parent ship workflow reaches this carved section.", + "modes": { + "parent": "ship" + }, + "question_sequence": "Preserved verbatim in the inlined section.", + "follow_up_behavior": "Preserved verbatim in the inlined section.", + "smart_skip_rules": "Inherited unchanged from the parent specialist workflow.", + "pushback_rules": "Inherited unchanged from the parent specialist workflow.", + "stop_gates": "Inherited unchanged from the parent specialist workflow.", + "approval_gates": "Inherited unchanged from the parent specialist workflow.", + "rubrics_and_scoring": "Preserved verbatim in the inlined section.", + "cognitive_frameworks": [ + "Step 13: CHANGELOG (auto-generate)" + ], + "evidence_requirements": "Inherited unchanged from the parent specialist workflow.", + "artifacts_produced": "Inherited unchanged from the parent specialist workflow.", + "mutation_authority": "Inherited unchanged from the parent specialist workflow.", + "exit_states": "Inherited unchanged from the parent specialist workflow.", + "voice": "Inherited unchanged from the parent specialist workflow.", + "response_posture": "Inherited unchanged from the parent specialist workflow.", + "new_location": "skills/ship/references/sections/ship/changelog.md", + "parity_test": "scripts/gstack2/run-parity.ts exact packaged-section, inline inclusion, and Git-blob checks" + }, + { + "source_path": "ship/sections/greptile.md.tmpl", + "parent_source": "ship", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "974828e099f61161af0735bfb48fa5939f5efaf8", + "normalized_render_sha256": "48c59e532a5878215272cebfa1feecf466a35c44aee1fc1cbbf1691b6bfcd6a7", + "ported_render_sha256": "2d457433edd3bd049a63aae9aac5d93701b3b141f2c6b03ca434173238854e06", + "target": "skills/ship/references/sections/ship/greptile.md", + "inlined_module_target": "skills/ship/references/legacy/ship.md", + "packaged_targets": [ + "skills/ship/references/sections/ship/greptile.md" + ], + "disposition": "MECHANICAL_PORT", + "original_source_file": "ship/sections/greptile.md.tmpl", + "original_line_range": "1-50", + "purpose": "Carved specialist section from ship, mechanically inlined into its preserved module.", + "invocation_conditions": "Loaded only when the parent ship workflow reaches this carved section.", + "modes": { + "parent": "ship" + }, + "question_sequence": "Preserved verbatim in the inlined section.", + "follow_up_behavior": "Preserved verbatim in the inlined section.", + "smart_skip_rules": "Inherited unchanged from the parent specialist workflow.", + "pushback_rules": "Inherited unchanged from the parent specialist workflow.", + "stop_gates": "Inherited unchanged from the parent specialist workflow.", + "approval_gates": "Inherited unchanged from the parent specialist workflow.", + "rubrics_and_scoring": "Preserved verbatim in the inlined section.", + "cognitive_frameworks": [ + "Step 10: Address Greptile review comments (if PR exists)" + ], + "evidence_requirements": "Inherited unchanged from the parent specialist workflow.", + "artifacts_produced": "Inherited unchanged from the parent specialist workflow.", + "mutation_authority": "Inherited unchanged from the parent specialist workflow.", + "exit_states": "Inherited unchanged from the parent specialist workflow.", + "voice": "Inherited unchanged from the parent specialist workflow.", + "response_posture": "Inherited unchanged from the parent specialist workflow.", + "new_location": "skills/ship/references/sections/ship/greptile.md", + "parity_test": "scripts/gstack2/run-parity.ts exact packaged-section, inline inclusion, and Git-blob checks" + }, + { + "source_path": "ship/sections/plan-completion.md.tmpl", + "parent_source": "ship", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "357cec24b6e7261b2451dee48c259fb6b0ae497a", + "normalized_render_sha256": "7aef2bc76d8a43d5618017d7b12482b341bd5691b4183271b0027f6a8055b1b2", + "ported_render_sha256": "9ad216289c2fdbcf2f7e1f8a5ca2257ab2875ea86b0681174a4065132a32c171", + "target": "skills/ship/references/sections/ship/plan-completion.md", + "inlined_module_target": "skills/ship/references/legacy/ship.md", + "packaged_targets": [ + "skills/ship/references/sections/ship/plan-completion.md" + ], + "disposition": "MECHANICAL_PORT", + "original_source_file": "ship/sections/plan-completion.md.tmpl", + "original_line_range": "1-32", + "purpose": "Carved specialist section from ship, mechanically inlined into its preserved module.", + "invocation_conditions": "Loaded only when the parent ship workflow reaches this carved section.", + "modes": { + "parent": "ship" + }, + "question_sequence": "Preserved verbatim in the inlined section.", + "follow_up_behavior": "Preserved verbatim in the inlined section.", + "smart_skip_rules": "Inherited unchanged from the parent specialist workflow.", + "pushback_rules": "Inherited unchanged from the parent specialist workflow.", + "stop_gates": "Inherited unchanged from the parent specialist workflow.", + "approval_gates": "Inherited unchanged from the parent specialist workflow.", + "rubrics_and_scoring": "Preserved verbatim in the inlined section.", + "cognitive_frameworks": [ + "Step 8: Plan Completion Audit", + "Actionable Item Extraction", + "Verification Mode", + "Cross-Reference Against Diff", + "Output Format", + "Gate Logic", + "Step 8.1: Plan Verification", + "1. Check for verification section", + "2. Check for running dev server", + "3. Invoke /qa-only inline", + "4. Gate logic", + "5. Include in PR body", + "Prior Learnings", + "Step 8.2: Scope Drift Detection" + ], + "evidence_requirements": "Inherited unchanged from the parent specialist workflow.", + "artifacts_produced": "Inherited unchanged from the parent specialist workflow.", + "mutation_authority": "Inherited unchanged from the parent specialist workflow.", + "exit_states": "Inherited unchanged from the parent specialist workflow.", + "voice": "Inherited unchanged from the parent specialist workflow.", + "response_posture": "Inherited unchanged from the parent specialist workflow.", + "new_location": "skills/ship/references/sections/ship/plan-completion.md", + "parity_test": "scripts/gstack2/run-parity.ts exact packaged-section, inline inclusion, and Git-blob checks" + }, + { + "source_path": "ship/sections/pr-body.md.tmpl", + "parent_source": "ship", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "22ac0d668ba8f2a15c7f9416508d81727c5114e0", + "normalized_render_sha256": "813c4c75f1cc8c85ab3121f0a76966673118cf759d283c3ef5f6aa1ba64dd764", + "ported_render_sha256": "650dc896bf54eb2ab86a0fa1f4a1d759fb951452553581d5c685318cf6e8fa66", + "target": "skills/ship/references/sections/ship/pr-body.md", + "inlined_module_target": "skills/ship/references/legacy/ship.md", + "packaged_targets": [ + "skills/ship/references/sections/ship/pr-body.md" + ], + "disposition": "MECHANICAL_PORT", + "original_source_file": "ship/sections/pr-body.md.tmpl", + "original_line_range": "1-206", + "purpose": "Carved specialist section from ship, mechanically inlined into its preserved module.", + "invocation_conditions": "Loaded only when the parent ship workflow reaches this carved section.", + "modes": { + "parent": "ship" + }, + "question_sequence": "Preserved verbatim in the inlined section.", + "follow_up_behavior": "Preserved verbatim in the inlined section.", + "smart_skip_rules": "Inherited unchanged from the parent specialist workflow.", + "pushback_rules": "Inherited unchanged from the parent specialist workflow.", + "stop_gates": "Inherited unchanged from the parent specialist workflow.", + "approval_gates": "Inherited unchanged from the parent specialist workflow.", + "rubrics_and_scoring": "Preserved verbatim in the inlined section.", + "cognitive_frameworks": [ + "Step 18: Documentation sync (via subagent, before PR creation)", + "Step 19: Create PR/MR", + "Redaction scan (PR body + title) — runs before create AND edit" + ], + "evidence_requirements": "Inherited unchanged from the parent specialist workflow.", + "artifacts_produced": "Inherited unchanged from the parent specialist workflow.", + "mutation_authority": "Inherited unchanged from the parent specialist workflow.", + "exit_states": "Inherited unchanged from the parent specialist workflow.", + "voice": "Inherited unchanged from the parent specialist workflow.", + "response_posture": "Inherited unchanged from the parent specialist workflow.", + "new_location": "skills/ship/references/sections/ship/pr-body.md", + "parity_test": "scripts/gstack2/run-parity.ts exact packaged-section, inline inclusion, and Git-blob checks" + }, + { + "source_path": "ship/sections/review-army.md.tmpl", + "parent_source": "ship", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "e55db627e629ec501f1073dd383a7f13499c93ae", + "normalized_render_sha256": "21cbb6b729ac4069fb1c9626979ad821e5227463d783b16b70f67526208d697b", + "ported_render_sha256": "cbfee41463032434762b1c6abcbb6372b841832f733f102f4e8c6c49f1407bb2", + "target": "skills/ship/references/sections/ship/review-army.md", + "inlined_module_target": "skills/ship/references/legacy/ship.md", + "packaged_targets": [ + "skills/ship/references/sections/ship/review-army.md" + ], + "disposition": "MECHANICAL_PORT", + "original_source_file": "ship/sections/review-army.md.tmpl", + "original_line_range": "1-56", + "purpose": "Carved specialist section from ship, mechanically inlined into its preserved module.", + "invocation_conditions": "Loaded only when the parent ship workflow reaches this carved section.", + "modes": { + "parent": "ship" + }, + "question_sequence": "Preserved verbatim in the inlined section.", + "follow_up_behavior": "Preserved verbatim in the inlined section.", + "smart_skip_rules": "Inherited unchanged from the parent specialist workflow.", + "pushback_rules": "Inherited unchanged from the parent specialist workflow.", + "stop_gates": "Inherited unchanged from the parent specialist workflow.", + "approval_gates": "Inherited unchanged from the parent specialist workflow.", + "rubrics_and_scoring": "Preserved verbatim in the inlined section.", + "cognitive_frameworks": [ + "Step 9: Pre-Landing Review", + "Confidence Calibration", + "Pre-emit verification gate (#1539 — kills the \"field doesn't exist\" FP class)", + "Design Review (conditional, diff-scoped)", + "Step 9.3: Cross-review finding dedup" + ], + "evidence_requirements": "Inherited unchanged from the parent specialist workflow.", + "artifacts_produced": "Inherited unchanged from the parent specialist workflow.", + "mutation_authority": "Inherited unchanged from the parent specialist workflow.", + "exit_states": "Inherited unchanged from the parent specialist workflow.", + "voice": "Inherited unchanged from the parent specialist workflow.", + "response_posture": "Inherited unchanged from the parent specialist workflow.", + "new_location": "skills/ship/references/sections/ship/review-army.md", + "parity_test": "scripts/gstack2/run-parity.ts exact packaged-section, inline inclusion, and Git-blob checks" + }, + { + "source_path": "ship/sections/test-coverage.md.tmpl", + "parent_source": "ship", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "8f00d0304f243a630c1920d9be0e3574dd2512aa", + "normalized_render_sha256": "e60f59bd59b913c3092734f538b446a52dcccaa00ff69277e0551b13ac8ac1cd", + "ported_render_sha256": "50e493e72caa15cd5e5cf91db9557b7d861571dc583a84b76a73eb557f90dce0", + "target": "skills/ship/references/sections/ship/test-coverage.md", + "inlined_module_target": "skills/ship/references/legacy/ship.md", + "packaged_targets": [ + "skills/ship/references/sections/ship/test-coverage.md" + ], + "disposition": "MECHANICAL_PORT", + "original_source_file": "ship/sections/test-coverage.md.tmpl", + "original_line_range": "1-24", + "purpose": "Carved specialist section from ship, mechanically inlined into its preserved module.", + "invocation_conditions": "Loaded only when the parent ship workflow reaches this carved section.", + "modes": { + "parent": "ship" + }, + "question_sequence": "Preserved verbatim in the inlined section.", + "follow_up_behavior": "Preserved verbatim in the inlined section.", + "smart_skip_rules": "Inherited unchanged from the parent specialist workflow.", + "pushback_rules": "Inherited unchanged from the parent specialist workflow.", + "stop_gates": "Inherited unchanged from the parent specialist workflow.", + "approval_gates": "Inherited unchanged from the parent specialist workflow.", + "rubrics_and_scoring": "Preserved verbatim in the inlined section.", + "cognitive_frameworks": [ + "Step 7: Test Coverage Audit", + "Test Framework Detection", + "E2E Test Decision Matrix", + "REGRESSION RULE (mandatory)", + "Test Plan Artifact" + ], + "evidence_requirements": "Inherited unchanged from the parent specialist workflow.", + "artifacts_produced": "Inherited unchanged from the parent specialist workflow.", + "mutation_authority": "Inherited unchanged from the parent specialist workflow.", + "exit_states": "Inherited unchanged from the parent specialist workflow.", + "voice": "Inherited unchanged from the parent specialist workflow.", + "response_posture": "Inherited unchanged from the parent specialist workflow.", + "new_location": "skills/ship/references/sections/ship/test-coverage.md", + "parity_test": "scripts/gstack2/run-parity.ts exact packaged-section, inline inclusion, and Git-blob checks" + }, + { + "source_path": "ship/sections/tests.md.tmpl", + "parent_source": "ship", + "base_sha": "bb57306d98c97011b0919c6132705a15b1579781", + "blob_sha": "e6d53d495f7868e93e06fde68ad2ca8c2fcab315", + "normalized_render_sha256": "4335d2e4bf76e164cc767330d96dc69ce7478ec2298690ee6fe873b654c6cb3e", + "ported_render_sha256": "34f688383d85bc0cc76f9e4a669554a4b5c799b374c56b491f86c5daf1ff74b4", + "target": "skills/ship/references/sections/ship/tests.md", + "inlined_module_target": "skills/ship/references/legacy/ship.md", + "packaged_targets": [ + "skills/ship/references/sections/ship/tests.md" + ], + "disposition": "MECHANICAL_PORT", + "original_source_file": "ship/sections/tests.md.tmpl", + "original_line_range": "1-110", + "purpose": "Carved specialist section from ship, mechanically inlined into its preserved module.", + "invocation_conditions": "Loaded only when the parent ship workflow reaches this carved section.", + "modes": { + "parent": "ship" + }, + "question_sequence": "Preserved verbatim in the inlined section.", + "follow_up_behavior": "Preserved verbatim in the inlined section.", + "smart_skip_rules": "Inherited unchanged from the parent specialist workflow.", + "pushback_rules": "Inherited unchanged from the parent specialist workflow.", + "stop_gates": "Inherited unchanged from the parent specialist workflow.", + "approval_gates": "Inherited unchanged from the parent specialist workflow.", + "rubrics_and_scoring": "Preserved verbatim in the inlined section.", + "cognitive_frameworks": [ + "Step 4: Test Framework Bootstrap", + "Test Framework Bootstrap", + "B2. Research best practices", + "B3. Framework selection", + "B4. Install and configure", + "B4.5. First real tests", + "B5. Verify", + "B5.5. CI/CD pipeline", + "B6. Create TESTING.md", + "B7. Update CLAUDE.md", + "B8. Commit", + "Step 5: Run tests (on merged code)", + "Test Failure Ownership Triage", + "Step T1: Classify each failure", + "Step T2: Handle in-branch failures", + "Step T3: Handle pre-existing failures", + "Step T4: Execute the chosen action", + "Step 6: Eval Suites (conditional)" + ], + "evidence_requirements": "Inherited unchanged from the parent specialist workflow.", + "artifacts_produced": "Inherited unchanged from the parent specialist workflow.", + "mutation_authority": "Inherited unchanged from the parent specialist workflow.", + "exit_states": "Inherited unchanged from the parent specialist workflow.", + "voice": "Inherited unchanged from the parent specialist workflow.", + "response_posture": "Inherited unchanged from the parent specialist workflow.", + "new_location": "skills/ship/references/sections/ship/tests.md", + "parity_test": "scripts/gstack2/run-parity.ts exact packaged-section, inline inclusion, and Git-blob checks" + } + ], + "section_copies": [ + { + "tree": "design", + "source": "design-consultation", + "source_path": "design-consultation/sections/proposal-and-preview.md.tmpl", + "target_path": "skills/design/references/sections/design-consultation/proposal-and-preview.md", + "blob_sha": "5d2d13a7024365d24f926cc49e99f3a980d57059", + "sha256": "2ca1a8fff531a5ff46c16b786eb139c31994a874f24d47d8f8bb8b4e8771f0b5" + }, + { + "tree": "design", + "source": "plan-design-review", + "source_path": "plan-design-review/sections/review-sections.md.tmpl", + "target_path": "skills/design/references/sections/plan-design-review/review-sections.md", + "blob_sha": "8b9c0c4bc37bf056319fdfa5e6e64df7e2c63232", + "sha256": "6768a45e4f168bac7fb9af348cf221fec54bf55465c545577893415849c35ea8" + }, + { + "tree": "plan", + "source": "office-hours", + "source_path": "office-hours/sections/design-and-handoff.md.tmpl", + "target_path": "skills/plan/references/sections/office-hours/design-and-handoff.md", + "blob_sha": "a8f8c5aac4b39b87d222c25201475b5f1ab9bf15", + "sha256": "8ff3b11362cb41ca336651af3a2bb2561a2f788fac59fbb59d41ed41925a859f" + }, + { + "tree": "plan", + "source": "plan-ceo-review", + "source_path": "plan-ceo-review/sections/review-sections.md.tmpl", + "target_path": "skills/plan/references/sections/plan-ceo-review/review-sections.md", + "blob_sha": "73262a9588ebe94532e1bd10505d8ea49fdb57dc", + "sha256": "0e0b90a422094f019e42f90be5bc4bc2aa6469449fd4a08e7a33d6883ac12c79" + }, + { + "tree": "plan", + "source": "plan-design-review", + "source_path": "plan-design-review/sections/review-sections.md.tmpl", + "target_path": "skills/plan/references/sections/plan-design-review/review-sections.md", + "blob_sha": "8b9c0c4bc37bf056319fdfa5e6e64df7e2c63232", + "sha256": "6768a45e4f168bac7fb9af348cf221fec54bf55465c545577893415849c35ea8" + }, + { + "tree": "plan", + "source": "plan-devex-review", + "source_path": "plan-devex-review/sections/review-sections.md.tmpl", + "target_path": "skills/plan/references/sections/plan-devex-review/review-sections.md", + "blob_sha": "eca5dbccaab17ef1f1ecd6b624df6762b8e596fe", + "sha256": "9be109595821a4674f116c79060bc65d87606c3c07c31c4cd014040f3e802676" + }, + { + "tree": "plan", + "source": "plan-eng-review", + "source_path": "plan-eng-review/sections/review-sections.md.tmpl", + "target_path": "skills/plan/references/sections/plan-eng-review/review-sections.md", + "blob_sha": "64562a6b1ff51a9c528d34aef1a7447e18576c13", + "sha256": "dadb7aede4f2fc530e45be2df1c147375acec488d9861b6ac6ace9aacc1d5d43" + }, + { + "tree": "review", + "source": "cso", + "source_path": "cso/sections/audit-phases.md.tmpl", + "target_path": "skills/review/references/sections/cso/audit-phases.md", + "blob_sha": "e2e9db0a7688ee80e2f82d55eb73633e6c038375", + "sha256": "3cdacdfacc9cd3b494cfa89613ad74c7702c2f3ed10dbd88ed66bf1220f04260" + }, + { + "tree": "ship", + "source": "document-release", + "source_path": "document-release/sections/release-body.md.tmpl", + "target_path": "skills/ship/references/sections/document-release/release-body.md", + "blob_sha": "475e8b258ae06c1ddc2269275a5d85e2dc09eddf", + "sha256": "18629e13adba829b14ace992e523431733b1b383863fefff640a1c53dbe34fbe" + }, + { + "tree": "ship", + "source": "ship", + "source_path": "ship/sections/adversarial.md.tmpl", + "target_path": "skills/ship/references/sections/ship/adversarial.md", + "blob_sha": "9edb22c9291fde2cc01c0c7eefcd3b033f2dfd29", + "sha256": "80c5b8c8b833e895479360ade3227a956ea2eba41c183840f163064e9d35dc5b" + }, + { + "tree": "ship", + "source": "ship", + "source_path": "ship/sections/changelog.md.tmpl", + "target_path": "skills/ship/references/sections/ship/changelog.md", + "blob_sha": "066c1d1b302176ff84126d3cfefaf722acf35bf1", + "sha256": "e84b0e33f0dab6bef8cc66b8088630dbfa2d1868bd02c2c938ebfe3cccaeb970" + }, + { + "tree": "ship", + "source": "ship", + "source_path": "ship/sections/greptile.md.tmpl", + "target_path": "skills/ship/references/sections/ship/greptile.md", + "blob_sha": "974828e099f61161af0735bfb48fa5939f5efaf8", + "sha256": "2d457433edd3bd049a63aae9aac5d93701b3b141f2c6b03ca434173238854e06" + }, + { + "tree": "ship", + "source": "ship", + "source_path": "ship/sections/plan-completion.md.tmpl", + "target_path": "skills/ship/references/sections/ship/plan-completion.md", + "blob_sha": "357cec24b6e7261b2451dee48c259fb6b0ae497a", + "sha256": "9ad216289c2fdbcf2f7e1f8a5ca2257ab2875ea86b0681174a4065132a32c171" + }, + { + "tree": "ship", + "source": "ship", + "source_path": "ship/sections/pr-body.md.tmpl", + "target_path": "skills/ship/references/sections/ship/pr-body.md", + "blob_sha": "22ac0d668ba8f2a15c7f9416508d81727c5114e0", + "sha256": "650dc896bf54eb2ab86a0fa1f4a1d759fb951452553581d5c685318cf6e8fa66" + }, + { + "tree": "ship", + "source": "ship", + "source_path": "ship/sections/review-army.md.tmpl", + "target_path": "skills/ship/references/sections/ship/review-army.md", + "blob_sha": "e55db627e629ec501f1073dd383a7f13499c93ae", + "sha256": "cbfee41463032434762b1c6abcbb6372b841832f733f102f4e8c6c49f1407bb2" + }, + { + "tree": "ship", + "source": "ship", + "source_path": "ship/sections/test-coverage.md.tmpl", + "target_path": "skills/ship/references/sections/ship/test-coverage.md", + "blob_sha": "8f00d0304f243a630c1920d9be0e3574dd2512aa", + "sha256": "50e493e72caa15cd5e5cf91db9557b7d861571dc583a84b76a73eb557f90dce0" + }, + { + "tree": "ship", + "source": "ship", + "source_path": "ship/sections/tests.md.tmpl", + "target_path": "skills/ship/references/sections/ship/tests.md", + "blob_sha": "e6d53d495f7868e93e06fde68ad2ca8c2fcab315", + "sha256": "34f688383d85bc0cc76f9e4a669554a4b5c799b374c56b491f86c5daf1ff74b4" + } + ], + "dependency_copies": [ + { + "source": "gstack-upgrade", + "owner_tree": "ship", + "consumer_tree": "plan", + "target": "skills/plan/references/legacy/gstack-upgrade.md", + "sha256": "0664ec29f1619d08ba296c2160c8c9b9f8a8116131cca8d96f6a9c8ec0f0fcef", + "disposition": "SHARED_MODULE" + }, + { + "source": "plan-design-review", + "owner_tree": "design", + "consumer_tree": "plan", + "target": "skills/plan/references/legacy/plan-design-review.md", + "sha256": "7b041d51147ffaeaf7bc0ed34e07a3b7b6baf9e62d921f4d94f59e1c89d886ea", + "disposition": "SHARED_MODULE" + }, + { + "source": "gstack-upgrade", + "owner_tree": "ship", + "consumer_tree": "design", + "target": "skills/design/references/legacy/gstack-upgrade.md", + "sha256": "0664ec29f1619d08ba296c2160c8c9b9f8a8116131cca8d96f6a9c8ec0f0fcef", + "disposition": "SHARED_MODULE" + }, + { + "source": "gstack-upgrade", + "owner_tree": "ship", + "consumer_tree": "qa", + "target": "skills/qa/references/legacy/gstack-upgrade.md", + "sha256": "0664ec29f1619d08ba296c2160c8c9b9f8a8116131cca8d96f6a9c8ec0f0fcef", + "disposition": "SHARED_MODULE" + }, + { + "source": "investigate", + "owner_tree": "debug", + "consumer_tree": "qa", + "target": "skills/qa/references/legacy/investigate.md", + "sha256": "d77dc18a2796f217ff20c84947236b05be730818a0430413a0d3d6bd9b6f0c08", + "disposition": "SHARED_MODULE" + }, + { + "source": "gstack-upgrade", + "owner_tree": "ship", + "consumer_tree": "debug", + "target": "skills/debug/references/legacy/gstack-upgrade.md", + "sha256": "0664ec29f1619d08ba296c2160c8c9b9f8a8116131cca8d96f6a9c8ec0f0fcef", + "disposition": "SHARED_MODULE" + }, + { + "source": "gstack-upgrade", + "owner_tree": "ship", + "consumer_tree": "review", + "target": "skills/review/references/legacy/gstack-upgrade.md", + "sha256": "0664ec29f1619d08ba296c2160c8c9b9f8a8116131cca8d96f6a9c8ec0f0fcef", + "disposition": "SHARED_MODULE" + }, + { + "source": "canary", + "owner_tree": "qa", + "consumer_tree": "ship", + "target": "skills/ship/references/legacy/canary.md", + "sha256": "c5cfaf6a835b62d59d590d37c7965204cb18961b2cc090570847a4a445270694", + "disposition": "SHARED_MODULE" + }, + { + "source": "context-restore", + "owner_tree": "plan", + "consumer_tree": "ship", + "target": "skills/ship/references/legacy/context-restore.md", + "sha256": "8e564653aa951d7067dc1218b74b229e75ef16f1b32b49307c439c8f56d62930", + "disposition": "SHARED_MODULE" + }, + { + "source": "qa-only", + "owner_tree": "qa", + "consumer_tree": "ship", + "target": "skills/ship/references/legacy/qa-only.md", + "sha256": "4f52daf45353af555fd910b960ae295653c141eb80cc024c55dc0a9607baeb10", + "disposition": "SHARED_MODULE" + } + ], + "assets": [ + { + "tree": "debug", + "source_path": "docs/askuserquestion-cjk.md", + "target_path": "skills/debug/references/support/docs/askuserquestion-cjk.md", + "blob_sha": "54f4ac34509ecb094b266108958eb73aac19ca86", + "baseline_sha256": "a70240c7de8e92c168904bf15e33cbbbd08c39fbbbfd37c39c986507fded86f5", + "sha256": "a70240c7de8e92c168904bf15e33cbbbd08c39fbbbfd37c39c986507fded86f5", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "debug", + "source_path": "docs/askuserquestion-split.md", + "target_path": "skills/debug/references/support/docs/askuserquestion-split.md", + "blob_sha": "ec2f880cef9d64d37b1da5b101531172509fdcf2", + "baseline_sha256": "6b80c7c1849f60f5e084cb8cffce76530b2f01131be84ec89636c437280e115e", + "sha256": "6b80c7c1849f60f5e084cb8cffce76530b2f01131be84ec89636c437280e115e", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "debug", + "source_path": "ETHOS.md", + "target_path": "skills/debug/references/support/ETHOS.md", + "blob_sha": "3dbd5e570807a4f11cd75cfcaa8e77cb52d9fb7a", + "baseline_sha256": "dedb0b945ce542b6a5da8af99b974a88a71465870978f3831c4a01d18db8e57b", + "sha256": "dedb0b945ce542b6a5da8af99b974a88a71465870978f3831c4a01d18db8e57b", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "debug", + "source_path": "scripts/jargon-list.json", + "target_path": "skills/debug/references/support/scripts/jargon-list.json", + "blob_sha": "e8f321d8ae51c458f9ab48bbb7fdf3789c472c14", + "baseline_sha256": "cde02f2478022a5cd82e12cf07bfbfe8faed8a9b331026b68efb0aee2a9728b2", + "sha256": "cde02f2478022a5cd82e12cf07bfbfe8faed8a9b331026b68efb0aee2a9728b2", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "debug", + "source_path": "scripts/question-registry.ts", + "target_path": "skills/debug/references/support/scripts/question-registry.ts", + "blob_sha": "eb1bf0f98bda7ecdee5ea6186828d2fad3b595f9", + "baseline_sha256": "1a6c41753c3efe3f0caf3808fcad5e3857401d3df5b4ff6eec2bdc03b0e828c9", + "sha256": "1a6c41753c3efe3f0caf3808fcad5e3857401d3df5b4ff6eec2bdc03b0e828c9", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "design", + "source_path": "design-html/vendor/pretext.js", + "target_path": "skills/design/assets/design-html/vendor/pretext.js", + "blob_sha": "93e622057d11ccc71c8b2b5bfe0d0d863ba1be15", + "baseline_sha256": "c85e755d86d33718e66978d18a2733eb5d11cf44747f58846bd390ed0d6f24e7", + "sha256": "c85e755d86d33718e66978d18a2733eb5d11cf44747f58846bd390ed0d6f24e7", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "design", + "source_path": "docs/askuserquestion-cjk.md", + "target_path": "skills/design/references/support/docs/askuserquestion-cjk.md", + "blob_sha": "54f4ac34509ecb094b266108958eb73aac19ca86", + "baseline_sha256": "a70240c7de8e92c168904bf15e33cbbbd08c39fbbbfd37c39c986507fded86f5", + "sha256": "a70240c7de8e92c168904bf15e33cbbbd08c39fbbbfd37c39c986507fded86f5", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "design", + "source_path": "docs/askuserquestion-split.md", + "target_path": "skills/design/references/support/docs/askuserquestion-split.md", + "blob_sha": "ec2f880cef9d64d37b1da5b101531172509fdcf2", + "baseline_sha256": "6b80c7c1849f60f5e084cb8cffce76530b2f01131be84ec89636c437280e115e", + "sha256": "6b80c7c1849f60f5e084cb8cffce76530b2f01131be84ec89636c437280e115e", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "design", + "source_path": "ETHOS.md", + "target_path": "skills/design/references/support/ETHOS.md", + "blob_sha": "3dbd5e570807a4f11cd75cfcaa8e77cb52d9fb7a", + "baseline_sha256": "dedb0b945ce542b6a5da8af99b974a88a71465870978f3831c4a01d18db8e57b", + "sha256": "dedb0b945ce542b6a5da8af99b974a88a71465870978f3831c4a01d18db8e57b", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "design", + "source_path": "scripts/jargon-list.json", + "target_path": "skills/design/references/support/scripts/jargon-list.json", + "blob_sha": "e8f321d8ae51c458f9ab48bbb7fdf3789c472c14", + "baseline_sha256": "cde02f2478022a5cd82e12cf07bfbfe8faed8a9b331026b68efb0aee2a9728b2", + "sha256": "cde02f2478022a5cd82e12cf07bfbfe8faed8a9b331026b68efb0aee2a9728b2", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "design", + "source_path": "scripts/question-registry.ts", + "target_path": "skills/design/references/support/scripts/question-registry.ts", + "blob_sha": "eb1bf0f98bda7ecdee5ea6186828d2fad3b595f9", + "baseline_sha256": "1a6c41753c3efe3f0caf3808fcad5e3857401d3df5b4ff6eec2bdc03b0e828c9", + "sha256": "1a6c41753c3efe3f0caf3808fcad5e3857401d3df5b4ff6eec2bdc03b0e828c9", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "plan", + "source_path": "plan-devex-review/dx-hall-of-fame.md", + "target_path": "skills/plan/references/artifacts/plan-devex-review/dx-hall-of-fame.md", + "blob_sha": "99f8bdd216f7c55455c23c33aecfd4c06cc5afc9", + "baseline_sha256": "661c199d78437f0b9f7f94d1691c3dd70076dd3dfaca8274bec36d41597b83a2", + "sha256": "661c199d78437f0b9f7f94d1691c3dd70076dd3dfaca8274bec36d41597b83a2", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "plan", + "source_path": "review/TODOS-format.md", + "target_path": "skills/plan/references/artifacts/review/TODOS-format.md", + "blob_sha": "eb2f4d9418f9930f0ca6af7f8eed6ca5f1685628", + "baseline_sha256": "faf7774c45356ee7990cba0289ca71bf77491394608052e4f711f5436046613c", + "sha256": "faf7774c45356ee7990cba0289ca71bf77491394608052e4f711f5436046613c", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "plan", + "source_path": "docs/askuserquestion-cjk.md", + "target_path": "skills/plan/references/support/docs/askuserquestion-cjk.md", + "blob_sha": "54f4ac34509ecb094b266108958eb73aac19ca86", + "baseline_sha256": "a70240c7de8e92c168904bf15e33cbbbd08c39fbbbfd37c39c986507fded86f5", + "sha256": "a70240c7de8e92c168904bf15e33cbbbd08c39fbbbfd37c39c986507fded86f5", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "plan", + "source_path": "docs/askuserquestion-split.md", + "target_path": "skills/plan/references/support/docs/askuserquestion-split.md", + "blob_sha": "ec2f880cef9d64d37b1da5b101531172509fdcf2", + "baseline_sha256": "6b80c7c1849f60f5e084cb8cffce76530b2f01131be84ec89636c437280e115e", + "sha256": "6b80c7c1849f60f5e084cb8cffce76530b2f01131be84ec89636c437280e115e", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "plan", + "source_path": "ETHOS.md", + "target_path": "skills/plan/references/support/ETHOS.md", + "blob_sha": "3dbd5e570807a4f11cd75cfcaa8e77cb52d9fb7a", + "baseline_sha256": "dedb0b945ce542b6a5da8af99b974a88a71465870978f3831c4a01d18db8e57b", + "sha256": "dedb0b945ce542b6a5da8af99b974a88a71465870978f3831c4a01d18db8e57b", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "plan", + "source_path": "lib/redact-patterns.ts", + "target_path": "skills/plan/references/support/lib/redact-patterns.ts", + "blob_sha": "76b81f3d2759faa3d7190286158dc7fb30633e46", + "baseline_sha256": "2f8f7314ad5ec78e436655b9c294ec2215ed7bd2780b5f5a82d9375f2b705e7b", + "sha256": "2f8f7314ad5ec78e436655b9c294ec2215ed7bd2780b5f5a82d9375f2b705e7b", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "plan", + "source_path": "scripts/jargon-list.json", + "target_path": "skills/plan/references/support/scripts/jargon-list.json", + "blob_sha": "e8f321d8ae51c458f9ab48bbb7fdf3789c472c14", + "baseline_sha256": "cde02f2478022a5cd82e12cf07bfbfe8faed8a9b331026b68efb0aee2a9728b2", + "sha256": "cde02f2478022a5cd82e12cf07bfbfe8faed8a9b331026b68efb0aee2a9728b2", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "plan", + "source_path": "scripts/question-registry.ts", + "target_path": "skills/plan/references/support/scripts/question-registry.ts", + "blob_sha": "eb1bf0f98bda7ecdee5ea6186828d2fad3b595f9", + "baseline_sha256": "1a6c41753c3efe3f0caf3808fcad5e3857401d3df5b4ff6eec2bdc03b0e828c9", + "sha256": "1a6c41753c3efe3f0caf3808fcad5e3857401d3df5b4ff6eec2bdc03b0e828c9", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "ios-qa/scripts/gen-accessors-tool/Package.swift", + "target_path": "skills/qa/assets/ios-qa/scripts/gen-accessors-tool/Package.swift", + "blob_sha": "653b68f36eda6668c135ab97710303e5940c74a6", + "baseline_sha256": "184e247b4249c5d1a7e4278cf5460c0961dc5c2ab9b07a5033f35cfba5556755", + "sha256": "184e247b4249c5d1a7e4278cf5460c0961dc5c2ab9b07a5033f35cfba5556755", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "ios-qa/scripts/gen-accessors-tool/Sources/GenAccessors/main.swift", + "target_path": "skills/qa/assets/ios-qa/scripts/gen-accessors-tool/Sources/GenAccessors/main.swift", + "blob_sha": "8287350cb07ada4c779a093fd45c3ce349418c81", + "baseline_sha256": "8dfd89a725048bb73f54f36878941b178b5bfef115139255f20199a5de8af725", + "sha256": "8dfd89a725048bb73f54f36878941b178b5bfef115139255f20199a5de8af725", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "ios-qa/docs/tailscale-acl-example.md", + "target_path": "skills/qa/references/artifacts/ios-qa/docs/tailscale-acl-example.md", + "blob_sha": "6eedfe5c6ee3b8edc4caa4b26a2fe100dffe503c", + "baseline_sha256": "e7814c05209eba94ffab284157f1722b1a2dbb3fedcddb2dbb78c37d3a03072e", + "sha256": "e7814c05209eba94ffab284157f1722b1a2dbb3fedcddb2dbb78c37d3a03072e", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "ios-qa/templates/Bridges.swift.template", + "target_path": "skills/qa/references/artifacts/ios-qa/templates/Bridges.swift.template", + "blob_sha": "bf7af6e3fb36815187f0d72519b8b5deaa01fda4", + "baseline_sha256": "7f066d2f70ec45bd1f732fa011451a4cc365c435cb5b59e04660288b49020207", + "sha256": "7f066d2f70ec45bd1f732fa011451a4cc365c435cb5b59e04660288b49020207", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "ios-qa/templates/DebugBridgeManager.swift.template", + "target_path": "skills/qa/references/artifacts/ios-qa/templates/DebugBridgeManager.swift.template", + "blob_sha": "e18e2fb05b26cc890c428c3e909bb836e91fd8e7", + "baseline_sha256": "ca8e2e57033fdea406ffb7c75caf4ca65a4f999a8ef3023c86e4cce1b9f0485c", + "sha256": "ca8e2e57033fdea406ffb7c75caf4ca65a4f999a8ef3023c86e4cce1b9f0485c", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "ios-qa/templates/DebugBridgeTouch.h.template", + "target_path": "skills/qa/references/artifacts/ios-qa/templates/DebugBridgeTouch.h.template", + "blob_sha": "1f85c12111d7e5a41d2459447988da6d02136f20", + "baseline_sha256": "706bb9f8883f95f1d3a238e9cadc6cf4097130e4ad7d9c3880ad7b12c6e43cb7", + "sha256": "706bb9f8883f95f1d3a238e9cadc6cf4097130e4ad7d9c3880ad7b12c6e43cb7", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "ios-qa/templates/DebugBridgeTouch.m.template", + "target_path": "skills/qa/references/artifacts/ios-qa/templates/DebugBridgeTouch.m.template", + "blob_sha": "7f7b7d1a3d3a67ecd29ebf0e45d50ec82640ef60", + "baseline_sha256": "e4a85ea0608b1486f9399db12b211bc7359bab49cef1804bb7bfe7c5fd846c87", + "sha256": "e4a85ea0608b1486f9399db12b211bc7359bab49cef1804bb7bfe7c5fd846c87", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "ios-qa/templates/DebugBridgeWiring.swift.template", + "target_path": "skills/qa/references/artifacts/ios-qa/templates/DebugBridgeWiring.swift.template", + "blob_sha": "009a7086198c289918e0552e2cc9422fb6c730c7", + "baseline_sha256": "0e178b47704f1aa9403059628362847ebd777ee37f4c04f47df7bcc28d9b7175", + "sha256": "0e178b47704f1aa9403059628362847ebd777ee37f4c04f47df7bcc28d9b7175", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "ios-qa/templates/DebugOverlay.swift.template", + "target_path": "skills/qa/references/artifacts/ios-qa/templates/DebugOverlay.swift.template", + "blob_sha": "1d888db0ce2171ebe372a06f8797c5aaca4a954e", + "baseline_sha256": "cb027ff31c0e75e5528a6b30748e7189b7adaf25700ca76a3f16cccf6b0f9802", + "sha256": "cb027ff31c0e75e5528a6b30748e7189b7adaf25700ca76a3f16cccf6b0f9802", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "ios-qa/templates/Package.swift.template", + "target_path": "skills/qa/references/artifacts/ios-qa/templates/Package.swift.template", + "blob_sha": "88d6bd319478c7b86b6f989b8cef60e7334f094d", + "baseline_sha256": "ddb23d0f9fe4e0d1632da20332ce385edaaef889e2741202440bda2e342d41c3", + "sha256": "ddb23d0f9fe4e0d1632da20332ce385edaaef889e2741202440bda2e342d41c3", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "ios-qa/templates/StateAccessor.swift.template", + "target_path": "skills/qa/references/artifacts/ios-qa/templates/StateAccessor.swift.template", + "blob_sha": "07de99e19bb7cf5c58450ab63e42dd1961d39d58", + "baseline_sha256": "bd547097b3c7d9d356790aed1bef636632c3051df1a4680b4917e4adaa39d2a8", + "sha256": "bd547097b3c7d9d356790aed1bef636632c3051df1a4680b4917e4adaa39d2a8", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "ios-qa/templates/StateServer.swift.template", + "target_path": "skills/qa/references/artifacts/ios-qa/templates/StateServer.swift.template", + "blob_sha": "803bedf31fe708d18888b4508203c941ca406404", + "baseline_sha256": "badf65ea22f20953a39cc3f4651a5ee45444d575c2f5495152d207bc47446729", + "sha256": "badf65ea22f20953a39cc3f4651a5ee45444d575c2f5495152d207bc47446729", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "plan-devex-review/dx-hall-of-fame.md", + "target_path": "skills/qa/references/artifacts/plan-devex-review/dx-hall-of-fame.md", + "blob_sha": "99f8bdd216f7c55455c23c33aecfd4c06cc5afc9", + "baseline_sha256": "661c199d78437f0b9f7f94d1691c3dd70076dd3dfaca8274bec36d41597b83a2", + "sha256": "661c199d78437f0b9f7f94d1691c3dd70076dd3dfaca8274bec36d41597b83a2", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "qa/references/issue-taxonomy.md", + "target_path": "skills/qa/references/artifacts/qa/references/issue-taxonomy.md", + "blob_sha": "05c574166b469352301664cd02320a1ce1d65b41", + "baseline_sha256": "dbb99950047ddfe6ecc235958b072f713b13cb7af20dcff2773a0bbd11209b12", + "sha256": "dbb99950047ddfe6ecc235958b072f713b13cb7af20dcff2773a0bbd11209b12", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "qa/templates/qa-report-template.md", + "target_path": "skills/qa/references/artifacts/qa/templates/qa-report-template.md", + "blob_sha": "6aa30943392b75ca8fb8694be31edf89881afd92", + "baseline_sha256": "b5bef88a00dbca382bee82ebf08f297b8d67878b55312bfe64a14d52595f6111", + "sha256": "b5bef88a00dbca382bee82ebf08f297b8d67878b55312bfe64a14d52595f6111", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "docs/askuserquestion-cjk.md", + "target_path": "skills/qa/references/support/docs/askuserquestion-cjk.md", + "blob_sha": "54f4ac34509ecb094b266108958eb73aac19ca86", + "baseline_sha256": "a70240c7de8e92c168904bf15e33cbbbd08c39fbbbfd37c39c986507fded86f5", + "sha256": "a70240c7de8e92c168904bf15e33cbbbd08c39fbbbfd37c39c986507fded86f5", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "docs/askuserquestion-split.md", + "target_path": "skills/qa/references/support/docs/askuserquestion-split.md", + "blob_sha": "ec2f880cef9d64d37b1da5b101531172509fdcf2", + "baseline_sha256": "6b80c7c1849f60f5e084cb8cffce76530b2f01131be84ec89636c437280e115e", + "sha256": "6b80c7c1849f60f5e084cb8cffce76530b2f01131be84ec89636c437280e115e", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "ETHOS.md", + "target_path": "skills/qa/references/support/ETHOS.md", + "blob_sha": "3dbd5e570807a4f11cd75cfcaa8e77cb52d9fb7a", + "baseline_sha256": "dedb0b945ce542b6a5da8af99b974a88a71465870978f3831c4a01d18db8e57b", + "sha256": "dedb0b945ce542b6a5da8af99b974a88a71465870978f3831c4a01d18db8e57b", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "scripts/jargon-list.json", + "target_path": "skills/qa/references/support/scripts/jargon-list.json", + "blob_sha": "e8f321d8ae51c458f9ab48bbb7fdf3789c472c14", + "baseline_sha256": "cde02f2478022a5cd82e12cf07bfbfe8faed8a9b331026b68efb0aee2a9728b2", + "sha256": "cde02f2478022a5cd82e12cf07bfbfe8faed8a9b331026b68efb0aee2a9728b2", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "qa", + "source_path": "scripts/question-registry.ts", + "target_path": "skills/qa/references/support/scripts/question-registry.ts", + "blob_sha": "eb1bf0f98bda7ecdee5ea6186828d2fad3b595f9", + "baseline_sha256": "1a6c41753c3efe3f0caf3808fcad5e3857401d3df5b4ff6eec2bdc03b0e828c9", + "sha256": "1a6c41753c3efe3f0caf3808fcad5e3857401d3df5b4ff6eec2bdc03b0e828c9", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "review", + "source_path": "cso/ACKNOWLEDGEMENTS.md", + "target_path": "skills/review/references/artifacts/cso/ACKNOWLEDGEMENTS.md", + "blob_sha": "c4b89aebd4d6d129bc508215f2b07ce21014e933", + "baseline_sha256": "9988a37eb79023ad162f52c5eacb4a77d0654d912a3a7555914bbb3dcd4a4815", + "sha256": "9988a37eb79023ad162f52c5eacb4a77d0654d912a3a7555914bbb3dcd4a4815", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "review", + "source_path": "review/checklist.md", + "target_path": "skills/review/references/artifacts/review/checklist.md", + "blob_sha": "238c2acc4d111e51b670e76b3a70c040bc3898b2", + "baseline_sha256": "cfe559e2f4ece967a2e2e6243dd4166e5cf988c546c8590edaeb9beafd4f2f30", + "sha256": "cfe559e2f4ece967a2e2e6243dd4166e5cf988c546c8590edaeb9beafd4f2f30", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "review", + "source_path": "review/design-checklist.md", + "target_path": "skills/review/references/artifacts/review/design-checklist.md", + "blob_sha": "e9d2b7117c039f82b78daec8f7db63998ee1480c", + "baseline_sha256": "e6f4ac34f034005c7fc91e4008bb8101a0973a26230b86b50c4f580182e6c8bb", + "sha256": "c54596fca160b6f1a1f53e7652eee144f57c95c2ea7d13aca25620a971cbfbde", + "disposition": "MECHANICAL_PORT" + }, + { + "tree": "review", + "source_path": "review/greptile-triage.md", + "target_path": "skills/review/references/artifacts/review/greptile-triage.md", + "blob_sha": "3cb6e8d597fd04462b5c2fe18174be2c9ce75c8f", + "baseline_sha256": "60fbc224b9b54c0d1fea884d5caf5b1b03957c07fccddb9ba7cedff988920bbd", + "sha256": "75072d9d3e10f622a84a4edae8822eb735caba30d41df6184ab0812912e44bfb", + "disposition": "MECHANICAL_PORT" + }, + { + "tree": "review", + "source_path": "review/specialists/api-contract.md", + "target_path": "skills/review/references/artifacts/review/specialists/api-contract.md", + "blob_sha": "01a649b1b0f47bb1af78e1614924b80cddbd48fa", + "baseline_sha256": "263d23ac119dd601d315c191dbdbd503d47c00264c9c0ca81959559ca11d4e95", + "sha256": "263d23ac119dd601d315c191dbdbd503d47c00264c9c0ca81959559ca11d4e95", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "review", + "source_path": "review/specialists/data-migration.md", + "target_path": "skills/review/references/artifacts/review/specialists/data-migration.md", + "blob_sha": "effc11469c12ec14975cc12036f0e28570d39019", + "baseline_sha256": "b6fd9eb229002ea598f8fe9ff53b1cd8821e3bd37a7aa7b07b5526556c71ebca", + "sha256": "b6fd9eb229002ea598f8fe9ff53b1cd8821e3bd37a7aa7b07b5526556c71ebca", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "review", + "source_path": "review/specialists/maintainability.md", + "target_path": "skills/review/references/artifacts/review/specialists/maintainability.md", + "blob_sha": "a2a036f9ca4c77ea4d9b9b38233444772a9eccfc", + "baseline_sha256": "7d945a69e0763fd1be26ffdff65f1088cab555d80630ed4ad44313e5e6623036", + "sha256": "7d945a69e0763fd1be26ffdff65f1088cab555d80630ed4ad44313e5e6623036", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "review", + "source_path": "review/specialists/performance.md", + "target_path": "skills/review/references/artifacts/review/specialists/performance.md", + "blob_sha": "612aa285d69a3c73da37e766a8da6de489c41a6d", + "baseline_sha256": "545c294ae53638b4c8524e8cde08246a4ce3b5c287ec7c44e27f5556a3b0e8cc", + "sha256": "545c294ae53638b4c8524e8cde08246a4ce3b5c287ec7c44e27f5556a3b0e8cc", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "review", + "source_path": "review/specialists/red-team.md", + "target_path": "skills/review/references/artifacts/review/specialists/red-team.md", + "blob_sha": "12654da877f4f036e7f994fbd587b8cafe1e1d62", + "baseline_sha256": "9ea05149f5b13d6a19ecec26285142d09d259cf80a515af828abdd1f43320427", + "sha256": "9ea05149f5b13d6a19ecec26285142d09d259cf80a515af828abdd1f43320427", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "review", + "source_path": "review/specialists/security.md", + "target_path": "skills/review/references/artifacts/review/specialists/security.md", + "blob_sha": "b1d2e30c1ff0cc83d5d4e4e4f4fe5b1f4bd581e2", + "baseline_sha256": "d0dc1cf0f1c7450507cfc663a67624cbcd5d4cfd0258a3bfeb51dba6f09c7df2", + "sha256": "d0dc1cf0f1c7450507cfc663a67624cbcd5d4cfd0258a3bfeb51dba6f09c7df2", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "review", + "source_path": "review/specialists/testing.md", + "target_path": "skills/review/references/artifacts/review/specialists/testing.md", + "blob_sha": "b2ea12e57c882ef307daee1abaa7066429b4425f", + "baseline_sha256": "3fd6dc5d802fd112f75934c4c168c3f03e25275b70e1e403eb670cbf7447e4e7", + "sha256": "3fd6dc5d802fd112f75934c4c168c3f03e25275b70e1e403eb670cbf7447e4e7", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "review", + "source_path": "review/TODOS-format.md", + "target_path": "skills/review/references/artifacts/review/TODOS-format.md", + "blob_sha": "eb2f4d9418f9930f0ca6af7f8eed6ca5f1685628", + "baseline_sha256": "faf7774c45356ee7990cba0289ca71bf77491394608052e4f711f5436046613c", + "sha256": "faf7774c45356ee7990cba0289ca71bf77491394608052e4f711f5436046613c", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "review", + "source_path": "docs/askuserquestion-cjk.md", + "target_path": "skills/review/references/support/docs/askuserquestion-cjk.md", + "blob_sha": "54f4ac34509ecb094b266108958eb73aac19ca86", + "baseline_sha256": "a70240c7de8e92c168904bf15e33cbbbd08c39fbbbfd37c39c986507fded86f5", + "sha256": "a70240c7de8e92c168904bf15e33cbbbd08c39fbbbfd37c39c986507fded86f5", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "review", + "source_path": "docs/askuserquestion-split.md", + "target_path": "skills/review/references/support/docs/askuserquestion-split.md", + "blob_sha": "ec2f880cef9d64d37b1da5b101531172509fdcf2", + "baseline_sha256": "6b80c7c1849f60f5e084cb8cffce76530b2f01131be84ec89636c437280e115e", + "sha256": "6b80c7c1849f60f5e084cb8cffce76530b2f01131be84ec89636c437280e115e", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "review", + "source_path": "ETHOS.md", + "target_path": "skills/review/references/support/ETHOS.md", + "blob_sha": "3dbd5e570807a4f11cd75cfcaa8e77cb52d9fb7a", + "baseline_sha256": "dedb0b945ce542b6a5da8af99b974a88a71465870978f3831c4a01d18db8e57b", + "sha256": "dedb0b945ce542b6a5da8af99b974a88a71465870978f3831c4a01d18db8e57b", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "review", + "source_path": "lib/redact-patterns.ts", + "target_path": "skills/review/references/support/lib/redact-patterns.ts", + "blob_sha": "76b81f3d2759faa3d7190286158dc7fb30633e46", + "baseline_sha256": "2f8f7314ad5ec78e436655b9c294ec2215ed7bd2780b5f5a82d9375f2b705e7b", + "sha256": "2f8f7314ad5ec78e436655b9c294ec2215ed7bd2780b5f5a82d9375f2b705e7b", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "review", + "source_path": "scripts/jargon-list.json", + "target_path": "skills/review/references/support/scripts/jargon-list.json", + "blob_sha": "e8f321d8ae51c458f9ab48bbb7fdf3789c472c14", + "baseline_sha256": "cde02f2478022a5cd82e12cf07bfbfe8faed8a9b331026b68efb0aee2a9728b2", + "sha256": "cde02f2478022a5cd82e12cf07bfbfe8faed8a9b331026b68efb0aee2a9728b2", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "review", + "source_path": "scripts/question-registry.ts", + "target_path": "skills/review/references/support/scripts/question-registry.ts", + "blob_sha": "eb1bf0f98bda7ecdee5ea6186828d2fad3b595f9", + "baseline_sha256": "1a6c41753c3efe3f0caf3808fcad5e3857401d3df5b4ff6eec2bdc03b0e828c9", + "sha256": "1a6c41753c3efe3f0caf3808fcad5e3857401d3df5b4ff6eec2bdc03b0e828c9", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "ios-qa/scripts/gen-accessors-tool/Package.swift", + "target_path": "skills/ship/assets/ios-qa/scripts/gen-accessors-tool/Package.swift", + "blob_sha": "653b68f36eda6668c135ab97710303e5940c74a6", + "baseline_sha256": "184e247b4249c5d1a7e4278cf5460c0961dc5c2ab9b07a5033f35cfba5556755", + "sha256": "184e247b4249c5d1a7e4278cf5460c0961dc5c2ab9b07a5033f35cfba5556755", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "ios-qa/scripts/gen-accessors-tool/Sources/GenAccessors/main.swift", + "target_path": "skills/ship/assets/ios-qa/scripts/gen-accessors-tool/Sources/GenAccessors/main.swift", + "blob_sha": "8287350cb07ada4c779a093fd45c3ce349418c81", + "baseline_sha256": "8dfd89a725048bb73f54f36878941b178b5bfef115139255f20199a5de8af725", + "sha256": "8dfd89a725048bb73f54f36878941b178b5bfef115139255f20199a5de8af725", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "ios-qa/docs/tailscale-acl-example.md", + "target_path": "skills/ship/references/artifacts/ios-qa/docs/tailscale-acl-example.md", + "blob_sha": "6eedfe5c6ee3b8edc4caa4b26a2fe100dffe503c", + "baseline_sha256": "e7814c05209eba94ffab284157f1722b1a2dbb3fedcddb2dbb78c37d3a03072e", + "sha256": "e7814c05209eba94ffab284157f1722b1a2dbb3fedcddb2dbb78c37d3a03072e", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "ios-qa/templates/Bridges.swift.template", + "target_path": "skills/ship/references/artifacts/ios-qa/templates/Bridges.swift.template", + "blob_sha": "bf7af6e3fb36815187f0d72519b8b5deaa01fda4", + "baseline_sha256": "7f066d2f70ec45bd1f732fa011451a4cc365c435cb5b59e04660288b49020207", + "sha256": "7f066d2f70ec45bd1f732fa011451a4cc365c435cb5b59e04660288b49020207", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "ios-qa/templates/DebugBridgeManager.swift.template", + "target_path": "skills/ship/references/artifacts/ios-qa/templates/DebugBridgeManager.swift.template", + "blob_sha": "e18e2fb05b26cc890c428c3e909bb836e91fd8e7", + "baseline_sha256": "ca8e2e57033fdea406ffb7c75caf4ca65a4f999a8ef3023c86e4cce1b9f0485c", + "sha256": "ca8e2e57033fdea406ffb7c75caf4ca65a4f999a8ef3023c86e4cce1b9f0485c", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "ios-qa/templates/DebugBridgeTouch.h.template", + "target_path": "skills/ship/references/artifacts/ios-qa/templates/DebugBridgeTouch.h.template", + "blob_sha": "1f85c12111d7e5a41d2459447988da6d02136f20", + "baseline_sha256": "706bb9f8883f95f1d3a238e9cadc6cf4097130e4ad7d9c3880ad7b12c6e43cb7", + "sha256": "706bb9f8883f95f1d3a238e9cadc6cf4097130e4ad7d9c3880ad7b12c6e43cb7", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "ios-qa/templates/DebugBridgeTouch.m.template", + "target_path": "skills/ship/references/artifacts/ios-qa/templates/DebugBridgeTouch.m.template", + "blob_sha": "7f7b7d1a3d3a67ecd29ebf0e45d50ec82640ef60", + "baseline_sha256": "e4a85ea0608b1486f9399db12b211bc7359bab49cef1804bb7bfe7c5fd846c87", + "sha256": "e4a85ea0608b1486f9399db12b211bc7359bab49cef1804bb7bfe7c5fd846c87", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "ios-qa/templates/DebugBridgeWiring.swift.template", + "target_path": "skills/ship/references/artifacts/ios-qa/templates/DebugBridgeWiring.swift.template", + "blob_sha": "009a7086198c289918e0552e2cc9422fb6c730c7", + "baseline_sha256": "0e178b47704f1aa9403059628362847ebd777ee37f4c04f47df7bcc28d9b7175", + "sha256": "0e178b47704f1aa9403059628362847ebd777ee37f4c04f47df7bcc28d9b7175", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "ios-qa/templates/DebugOverlay.swift.template", + "target_path": "skills/ship/references/artifacts/ios-qa/templates/DebugOverlay.swift.template", + "blob_sha": "1d888db0ce2171ebe372a06f8797c5aaca4a954e", + "baseline_sha256": "cb027ff31c0e75e5528a6b30748e7189b7adaf25700ca76a3f16cccf6b0f9802", + "sha256": "cb027ff31c0e75e5528a6b30748e7189b7adaf25700ca76a3f16cccf6b0f9802", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "ios-qa/templates/Package.swift.template", + "target_path": "skills/ship/references/artifacts/ios-qa/templates/Package.swift.template", + "blob_sha": "88d6bd319478c7b86b6f989b8cef60e7334f094d", + "baseline_sha256": "ddb23d0f9fe4e0d1632da20332ce385edaaef889e2741202440bda2e342d41c3", + "sha256": "ddb23d0f9fe4e0d1632da20332ce385edaaef889e2741202440bda2e342d41c3", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "ios-qa/templates/StateAccessor.swift.template", + "target_path": "skills/ship/references/artifacts/ios-qa/templates/StateAccessor.swift.template", + "blob_sha": "07de99e19bb7cf5c58450ab63e42dd1961d39d58", + "baseline_sha256": "bd547097b3c7d9d356790aed1bef636632c3051df1a4680b4917e4adaa39d2a8", + "sha256": "bd547097b3c7d9d356790aed1bef636632c3051df1a4680b4917e4adaa39d2a8", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "ios-qa/templates/StateServer.swift.template", + "target_path": "skills/ship/references/artifacts/ios-qa/templates/StateServer.swift.template", + "blob_sha": "803bedf31fe708d18888b4508203c941ca406404", + "baseline_sha256": "badf65ea22f20953a39cc3f4651a5ee45444d575c2f5495152d207bc47446729", + "sha256": "badf65ea22f20953a39cc3f4651a5ee45444d575c2f5495152d207bc47446729", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "review/checklist.md", + "target_path": "skills/ship/references/artifacts/review/checklist.md", + "blob_sha": "238c2acc4d111e51b670e76b3a70c040bc3898b2", + "baseline_sha256": "cfe559e2f4ece967a2e2e6243dd4166e5cf988c546c8590edaeb9beafd4f2f30", + "sha256": "cfe559e2f4ece967a2e2e6243dd4166e5cf988c546c8590edaeb9beafd4f2f30", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "review/design-checklist.md", + "target_path": "skills/ship/references/artifacts/review/design-checklist.md", + "blob_sha": "e9d2b7117c039f82b78daec8f7db63998ee1480c", + "baseline_sha256": "e6f4ac34f034005c7fc91e4008bb8101a0973a26230b86b50c4f580182e6c8bb", + "sha256": "c54596fca160b6f1a1f53e7652eee144f57c95c2ea7d13aca25620a971cbfbde", + "disposition": "MECHANICAL_PORT" + }, + { + "tree": "ship", + "source_path": "review/greptile-triage.md", + "target_path": "skills/ship/references/artifacts/review/greptile-triage.md", + "blob_sha": "3cb6e8d597fd04462b5c2fe18174be2c9ce75c8f", + "baseline_sha256": "60fbc224b9b54c0d1fea884d5caf5b1b03957c07fccddb9ba7cedff988920bbd", + "sha256": "75072d9d3e10f622a84a4edae8822eb735caba30d41df6184ab0812912e44bfb", + "disposition": "MECHANICAL_PORT" + }, + { + "tree": "ship", + "source_path": "review/TODOS-format.md", + "target_path": "skills/ship/references/artifacts/review/TODOS-format.md", + "blob_sha": "eb2f4d9418f9930f0ca6af7f8eed6ca5f1685628", + "baseline_sha256": "faf7774c45356ee7990cba0289ca71bf77491394608052e4f711f5436046613c", + "sha256": "faf7774c45356ee7990cba0289ca71bf77491394608052e4f711f5436046613c", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "docs/askuserquestion-cjk.md", + "target_path": "skills/ship/references/support/docs/askuserquestion-cjk.md", + "blob_sha": "54f4ac34509ecb094b266108958eb73aac19ca86", + "baseline_sha256": "a70240c7de8e92c168904bf15e33cbbbd08c39fbbbfd37c39c986507fded86f5", + "sha256": "a70240c7de8e92c168904bf15e33cbbbd08c39fbbbfd37c39c986507fded86f5", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "docs/askuserquestion-split.md", + "target_path": "skills/ship/references/support/docs/askuserquestion-split.md", + "blob_sha": "ec2f880cef9d64d37b1da5b101531172509fdcf2", + "baseline_sha256": "6b80c7c1849f60f5e084cb8cffce76530b2f01131be84ec89636c437280e115e", + "sha256": "6b80c7c1849f60f5e084cb8cffce76530b2f01131be84ec89636c437280e115e", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "ETHOS.md", + "target_path": "skills/ship/references/support/ETHOS.md", + "blob_sha": "3dbd5e570807a4f11cd75cfcaa8e77cb52d9fb7a", + "baseline_sha256": "dedb0b945ce542b6a5da8af99b974a88a71465870978f3831c4a01d18db8e57b", + "sha256": "dedb0b945ce542b6a5da8af99b974a88a71465870978f3831c4a01d18db8e57b", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "scripts/jargon-list.json", + "target_path": "skills/ship/references/support/scripts/jargon-list.json", + "blob_sha": "e8f321d8ae51c458f9ab48bbb7fdf3789c472c14", + "baseline_sha256": "cde02f2478022a5cd82e12cf07bfbfe8faed8a9b331026b68efb0aee2a9728b2", + "sha256": "cde02f2478022a5cd82e12cf07bfbfe8faed8a9b331026b68efb0aee2a9728b2", + "disposition": "VERBATIM_PORT" + }, + { + "tree": "ship", + "source_path": "scripts/question-registry.ts", + "target_path": "skills/ship/references/support/scripts/question-registry.ts", + "blob_sha": "eb1bf0f98bda7ecdee5ea6186828d2fad3b595f9", + "baseline_sha256": "1a6c41753c3efe3f0caf3808fcad5e3857401d3df5b4ff6eec2bdc03b0e828c9", + "sha256": "1a6c41753c3efe3f0caf3808fcad5e3857401d3df5b4ff6eec2bdc03b0e828c9", + "disposition": "VERBATIM_PORT" + } + ], + "runtime_helpers": [ + { + "name": "browse", + "source_path": "browse/dist/browse", + "consumer_modules": [ + "benchmark", + "browse", + "canary", + "design-consultation", + "design-html", + "design-review", + "design-shotgun", + "devex-review", + "land-and-deploy", + "office-hours", + "open-gstack-browser", + "pair-agent", + "plan-design-review", + "qa", + "qa-only", + "setup-browser-cookies" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/browse" + }, + { + "name": "gstack", + "source_path": "bin/gstack", + "consumer_modules": [ + "diagram", + "ios-qa", + "ios-sync", + "open-gstack-browser", + "skillify" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack" + }, + { + "name": "gstack-artifacts-init", + "source_path": "bin/gstack-artifacts-init", + "consumer_modules": [ + "setup-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-artifacts-init" + }, + { + "name": "gstack-brain-cache", + "source_path": "bin/gstack-brain-cache", + "consumer_modules": [ + "office-hours", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-brain-cache" + }, + { + "name": "gstack-brain-sync", + "source_path": "bin/gstack-brain-sync", + "consumer_modules": [ + "autoplan", + "benchmark", + "benchmark-models", + "browse", + "canary", + "claude", + "codex", + "context-restore", + "context-save", + "cso", + "design-consultation", + "design-html", + "design-review", + "design-shotgun", + "devex-review", + "diagram", + "document-generate", + "document-release", + "gstack", + "health", + "investigate", + "ios-clean", + "ios-design-review", + "ios-fix", + "ios-qa", + "ios-sync", + "land-and-deploy", + "landing-report", + "learn", + "make-pdf", + "office-hours", + "open-gstack-browser", + "pair-agent", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review", + "plan-tune", + "qa", + "qa-only", + "retro", + "review", + "scrape", + "setup-browser-cookies", + "setup-deploy", + "setup-gbrain", + "ship", + "skillify", + "spec", + "sync-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-brain-sync" + }, + { + "name": "gstack-builder-profile", + "source_path": "bin/gstack-builder-profile", + "consumer_modules": [ + "office-hours" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-builder-profile" + }, + { + "name": "gstack-codex-probe", + "source_path": "bin/gstack-codex-probe", + "consumer_modules": [ + "autoplan", + "codex" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-codex-probe" + }, + { + "name": "gstack-config", + "source_path": "bin/gstack-config", + "consumer_modules": [ + "autoplan", + "benchmark", + "benchmark-models", + "browse", + "canary", + "claude", + "codex", + "context-restore", + "context-save", + "cso", + "design-consultation", + "design-html", + "design-review", + "design-shotgun", + "devex-review", + "diagram", + "document-generate", + "document-release", + "gstack", + "health", + "investigate", + "ios-clean", + "ios-design-review", + "ios-fix", + "ios-qa", + "ios-sync", + "land-and-deploy", + "landing-report", + "learn", + "make-pdf", + "office-hours", + "open-gstack-browser", + "pair-agent", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review", + "plan-tune", + "qa", + "qa-only", + "retro", + "review", + "scrape", + "setup-browser-cookies", + "setup-deploy", + "setup-gbrain", + "ship", + "skillify", + "spec", + "sync-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-config" + }, + { + "name": "gstack-decision-log", + "source_path": "bin/gstack-decision-log", + "consumer_modules": [ + "autoplan", + "canary", + "claude", + "codex", + "context-restore", + "context-save", + "cso", + "design-consultation", + "design-html", + "design-review", + "design-shotgun", + "devex-review", + "diagram", + "document-generate", + "document-release", + "health", + "investigate", + "ios-clean", + "ios-design-review", + "ios-fix", + "ios-qa", + "ios-sync", + "land-and-deploy", + "landing-report", + "learn", + "office-hours", + "open-gstack-browser", + "pair-agent", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review", + "plan-tune", + "qa", + "qa-only", + "retro", + "review", + "scrape", + "setup-deploy", + "setup-gbrain", + "ship", + "skillify", + "spec", + "sync-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-decision-log" + }, + { + "name": "gstack-decision-search", + "source_path": "bin/gstack-decision-search", + "consumer_modules": [ + "autoplan", + "canary", + "claude", + "codex", + "context-restore", + "context-save", + "cso", + "design-consultation", + "design-html", + "design-review", + "design-shotgun", + "devex-review", + "diagram", + "document-generate", + "document-release", + "health", + "investigate", + "ios-clean", + "ios-design-review", + "ios-fix", + "ios-qa", + "ios-sync", + "land-and-deploy", + "landing-report", + "learn", + "office-hours", + "open-gstack-browser", + "pair-agent", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review", + "plan-tune", + "qa", + "qa-only", + "retro", + "review", + "scrape", + "setup-deploy", + "setup-gbrain", + "ship", + "skillify", + "spec", + "sync-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-decision-search" + }, + { + "name": "gstack-design", + "source_path": "design/dist/design", + "consumer_modules": [ + "design-consultation", + "design-html", + "design-review", + "design-shotgun", + "office-hours", + "plan-design-review" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-design" + }, + { + "name": "gstack-detach", + "source_path": "bin/gstack-detach", + "consumer_modules": [ + "ship" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-detach" + }, + { + "name": "gstack-developer-profile", + "source_path": "bin/gstack-developer-profile", + "consumer_modules": [ + "office-hours", + "plan-tune" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-developer-profile" + }, + { + "name": "gstack-diff-scope", + "source_path": "bin/gstack-diff-scope", + "consumer_modules": [ + "land-and-deploy", + "ship" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-diff-scope" + }, + { + "name": "gstack-distill-apply", + "source_path": "bin/gstack-distill-apply", + "consumer_modules": [ + "plan-tune" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-distill-apply" + }, + { + "name": "gstack-distill-free-text", + "source_path": "bin/gstack-distill-free-text", + "consumer_modules": [ + "plan-tune" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-distill-free-text" + }, + { + "name": "gstack-first-task-detect", + "source_path": "bin/gstack-first-task-detect", + "consumer_modules": [ + "autoplan", + "benchmark", + "benchmark-models", + "browse", + "canary", + "claude", + "codex", + "context-restore", + "context-save", + "cso", + "design-consultation", + "design-html", + "design-review", + "design-shotgun", + "devex-review", + "diagram", + "document-generate", + "document-release", + "gstack", + "health", + "investigate", + "ios-clean", + "ios-design-review", + "ios-fix", + "ios-qa", + "ios-sync", + "land-and-deploy", + "landing-report", + "learn", + "make-pdf", + "office-hours", + "open-gstack-browser", + "pair-agent", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review", + "plan-tune", + "qa", + "qa-only", + "retro", + "review", + "scrape", + "setup-browser-cookies", + "setup-deploy", + "setup-gbrain", + "ship", + "skillify", + "spec", + "sync-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-first-task-detect" + }, + { + "name": "gstack-gbrain-detect", + "source_path": "bin/gstack-gbrain-detect", + "consumer_modules": [ + "setup-gbrain", + "sync-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-gbrain-detect" + }, + { + "name": "gstack-gbrain-install", + "source_path": "bin/gstack-gbrain-install", + "consumer_modules": [ + "setup-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-gbrain-install" + }, + { + "name": "gstack-gbrain-lib.sh", + "source_path": "bin/gstack-gbrain-lib.sh", + "consumer_modules": [ + "setup-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-gbrain-lib.sh" + }, + { + "name": "gstack-gbrain-mcp-verify", + "source_path": "bin/gstack-gbrain-mcp-verify", + "consumer_modules": [ + "setup-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-gbrain-mcp-verify" + }, + { + "name": "gstack-gbrain-repo-policy", + "source_path": "bin/gstack-gbrain-repo-policy", + "consumer_modules": [ + "setup-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-gbrain-repo-policy" + }, + { + "name": "gstack-gbrain-source-wireup", + "source_path": "bin/gstack-gbrain-source-wireup", + "consumer_modules": [ + "setup-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-gbrain-source-wireup" + }, + { + "name": "gstack-gbrain-supabase-provision", + "source_path": "bin/gstack-gbrain-supabase-provision", + "consumer_modules": [ + "setup-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-gbrain-supabase-provision" + }, + { + "name": "gstack-gbrain-supabase-verify", + "source_path": "bin/gstack-gbrain-supabase-verify", + "consumer_modules": [ + "setup-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-gbrain-supabase-verify" + }, + { + "name": "gstack-gbrain-sync", + "source_path": "bin/gstack-gbrain-sync.ts", + "consumer_modules": [ + "setup-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-gbrain-sync" + }, + { + "name": "gstack-gbrain-sync.ts", + "source_path": "bin/gstack-gbrain-sync.ts", + "consumer_modules": [ + "sync-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-gbrain-sync.ts" + }, + { + "name": "gstack-global-discover", + "source_path": "bin/gstack-global-discover.ts", + "consumer_modules": [ + "retro" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-global-discover" + }, + { + "name": "gstack-learnings-log", + "source_path": "bin/gstack-learnings-log", + "consumer_modules": [ + "autoplan", + "benchmark", + "benchmark-models", + "browse", + "canary", + "claude", + "codex", + "context-restore", + "context-save", + "cso", + "design-consultation", + "design-html", + "design-review", + "design-shotgun", + "devex-review", + "diagram", + "document-generate", + "document-release", + "gstack", + "health", + "investigate", + "ios-clean", + "ios-design-review", + "ios-fix", + "ios-qa", + "ios-sync", + "land-and-deploy", + "landing-report", + "learn", + "make-pdf", + "office-hours", + "open-gstack-browser", + "pair-agent", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review", + "plan-tune", + "qa", + "qa-only", + "retro", + "review", + "scrape", + "setup-browser-cookies", + "setup-deploy", + "setup-gbrain", + "ship", + "skillify", + "spec", + "sync-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-learnings-log" + }, + { + "name": "gstack-learnings-search", + "source_path": "bin/gstack-learnings-search", + "consumer_modules": [ + "autoplan", + "benchmark", + "benchmark-models", + "browse", + "canary", + "claude", + "codex", + "context-restore", + "context-save", + "cso", + "design-consultation", + "design-html", + "design-review", + "design-shotgun", + "devex-review", + "diagram", + "document-generate", + "document-release", + "gstack", + "health", + "investigate", + "ios-clean", + "ios-design-review", + "ios-fix", + "ios-qa", + "ios-sync", + "land-and-deploy", + "landing-report", + "learn", + "make-pdf", + "office-hours", + "open-gstack-browser", + "pair-agent", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review", + "plan-tune", + "qa", + "qa-only", + "retro", + "review", + "scrape", + "setup-browser-cookies", + "setup-deploy", + "setup-gbrain", + "ship", + "skillify", + "spec", + "sync-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-learnings-search" + }, + { + "name": "gstack-memory-ingest", + "source_path": "bin/gstack-memory-ingest.ts", + "consumer_modules": [ + "setup-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-memory-ingest" + }, + { + "name": "gstack-model-benchmark", + "source_path": "bin/gstack-model-benchmark", + "consumer_modules": [ + "benchmark-models" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-model-benchmark" + }, + { + "name": "gstack-next-version", + "source_path": "bin/gstack-next-version", + "consumer_modules": [ + "land-and-deploy", + "landing-report", + "review", + "ship" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-next-version" + }, + { + "name": "gstack-paths", + "source_path": "bin/gstack-paths", + "consumer_modules": [ + "codex", + "context-restore", + "context-save", + "freeze", + "guard", + "investigate", + "learn", + "office-hours", + "plan-tune", + "ship", + "spec", + "unfreeze" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-paths" + }, + { + "name": "gstack-pr-title-rewrite.sh", + "source_path": "bin/gstack-pr-title-rewrite.sh", + "consumer_modules": [ + "document-release", + "ship" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-pr-title-rewrite.sh" + }, + { + "name": "gstack-question-log", + "source_path": "bin/gstack-question-log", + "consumer_modules": [ + "autoplan", + "canary", + "claude", + "codex", + "context-restore", + "context-save", + "cso", + "design-consultation", + "design-html", + "design-review", + "design-shotgun", + "devex-review", + "diagram", + "document-generate", + "document-release", + "health", + "investigate", + "ios-clean", + "ios-design-review", + "ios-fix", + "ios-qa", + "ios-sync", + "land-and-deploy", + "landing-report", + "learn", + "office-hours", + "open-gstack-browser", + "pair-agent", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review", + "plan-tune", + "qa", + "qa-only", + "retro", + "review", + "scrape", + "setup-deploy", + "setup-gbrain", + "ship", + "skillify", + "spec", + "sync-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-question-log" + }, + { + "name": "gstack-question-preference", + "source_path": "bin/gstack-question-preference", + "consumer_modules": [ + "autoplan", + "canary", + "claude", + "codex", + "context-restore", + "context-save", + "cso", + "design-consultation", + "design-html", + "design-review", + "design-shotgun", + "devex-review", + "diagram", + "document-generate", + "document-release", + "health", + "investigate", + "ios-clean", + "ios-design-review", + "ios-fix", + "ios-qa", + "ios-sync", + "land-and-deploy", + "landing-report", + "learn", + "office-hours", + "open-gstack-browser", + "pair-agent", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review", + "plan-tune", + "qa", + "qa-only", + "retro", + "review", + "scrape", + "setup-deploy", + "setup-gbrain", + "ship", + "skillify", + "spec", + "sync-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-question-preference" + }, + { + "name": "gstack-redact", + "source_path": "bin/gstack-redact", + "consumer_modules": [ + "document-generate", + "document-release", + "ship", + "spec" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-redact" + }, + { + "name": "gstack-redact-audit-log", + "source_path": "bin/gstack-redact-audit-log", + "consumer_modules": [ + "spec" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-redact-audit-log" + }, + { + "name": "gstack-repo-mode", + "source_path": "bin/gstack-repo-mode", + "consumer_modules": [ + "autoplan", + "benchmark", + "benchmark-models", + "browse", + "canary", + "claude", + "codex", + "context-restore", + "context-save", + "cso", + "design-consultation", + "design-html", + "design-review", + "design-shotgun", + "devex-review", + "diagram", + "document-generate", + "document-release", + "gstack", + "health", + "investigate", + "ios-clean", + "ios-design-review", + "ios-fix", + "ios-qa", + "ios-sync", + "land-and-deploy", + "landing-report", + "learn", + "make-pdf", + "office-hours", + "open-gstack-browser", + "pair-agent", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review", + "plan-tune", + "qa", + "qa-only", + "retro", + "review", + "scrape", + "setup-browser-cookies", + "setup-deploy", + "setup-gbrain", + "ship", + "skillify", + "spec", + "sync-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-repo-mode" + }, + { + "name": "gstack-review-log", + "source_path": "bin/gstack-review-log", + "consumer_modules": [ + "autoplan", + "codex", + "devex-review", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review", + "review", + "ship" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-review-log" + }, + { + "name": "gstack-review-read", + "source_path": "bin/gstack-review-read", + "consumer_modules": [ + "devex-review", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review", + "review", + "ship" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-review-read" + }, + { + "name": "gstack-session-kind", + "source_path": "bin/gstack-session-kind", + "consumer_modules": [ + "autoplan", + "benchmark", + "benchmark-models", + "browse", + "canary", + "claude", + "codex", + "context-restore", + "context-save", + "cso", + "design-consultation", + "design-html", + "design-review", + "design-shotgun", + "devex-review", + "diagram", + "document-generate", + "document-release", + "gstack", + "health", + "investigate", + "ios-clean", + "ios-design-review", + "ios-fix", + "ios-qa", + "ios-sync", + "land-and-deploy", + "landing-report", + "learn", + "make-pdf", + "office-hours", + "open-gstack-browser", + "pair-agent", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review", + "plan-tune", + "qa", + "qa-only", + "retro", + "review", + "scrape", + "setup-browser-cookies", + "setup-deploy", + "setup-gbrain", + "ship", + "skillify", + "spec", + "sync-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-session-kind" + }, + { + "name": "gstack-slug", + "source_path": "bin/gstack-slug", + "consumer_modules": [ + "autoplan", + "benchmark", + "benchmark-models", + "browse", + "canary", + "claude", + "codex", + "context-restore", + "context-save", + "cso", + "design-consultation", + "design-html", + "design-review", + "design-shotgun", + "devex-review", + "diagram", + "document-generate", + "document-release", + "gstack", + "health", + "investigate", + "ios-clean", + "ios-design-review", + "ios-fix", + "ios-qa", + "ios-sync", + "land-and-deploy", + "landing-report", + "learn", + "make-pdf", + "office-hours", + "open-gstack-browser", + "pair-agent", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review", + "plan-tune", + "qa", + "qa-only", + "retro", + "review", + "scrape", + "setup-browser-cookies", + "setup-deploy", + "setup-gbrain", + "ship", + "skillify", + "spec", + "sync-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-slug" + }, + { + "name": "gstack-taste-update", + "source_path": "bin/gstack-taste-update", + "consumer_modules": [ + "design-consultation", + "design-shotgun" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-taste-update" + }, + { + "name": "gstack-telemetry-log", + "source_path": "bin/gstack-telemetry-log", + "consumer_modules": [ + "autoplan", + "benchmark", + "benchmark-models", + "browse", + "canary", + "claude", + "codex", + "context-restore", + "context-save", + "cso", + "design-consultation", + "design-html", + "design-review", + "design-shotgun", + "devex-review", + "diagram", + "document-generate", + "document-release", + "gstack", + "health", + "investigate", + "ios-clean", + "ios-design-review", + "ios-fix", + "ios-qa", + "ios-sync", + "land-and-deploy", + "landing-report", + "learn", + "make-pdf", + "office-hours", + "open-gstack-browser", + "pair-agent", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review", + "plan-tune", + "qa", + "qa-only", + "retro", + "review", + "scrape", + "setup-browser-cookies", + "setup-deploy", + "setup-gbrain", + "ship", + "skillify", + "spec", + "sync-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-telemetry-log" + }, + { + "name": "gstack-timeline-log", + "source_path": "bin/gstack-timeline-log", + "consumer_modules": [ + "autoplan", + "benchmark", + "benchmark-models", + "browse", + "canary", + "claude", + "codex", + "context-restore", + "context-save", + "cso", + "design-consultation", + "design-html", + "design-review", + "design-shotgun", + "devex-review", + "diagram", + "document-generate", + "document-release", + "gstack", + "health", + "investigate", + "ios-clean", + "ios-design-review", + "ios-fix", + "ios-qa", + "ios-sync", + "land-and-deploy", + "landing-report", + "learn", + "make-pdf", + "office-hours", + "open-gstack-browser", + "pair-agent", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review", + "plan-tune", + "qa", + "qa-only", + "retro", + "review", + "scrape", + "setup-browser-cookies", + "setup-deploy", + "setup-gbrain", + "ship", + "skillify", + "spec", + "sync-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-timeline-log" + }, + { + "name": "gstack-update-check", + "source_path": "bin/gstack-update-check", + "consumer_modules": [ + "autoplan", + "benchmark", + "benchmark-models", + "browse", + "canary", + "claude", + "codex", + "context-restore", + "context-save", + "cso", + "design-consultation", + "design-html", + "design-review", + "design-shotgun", + "devex-review", + "diagram", + "document-generate", + "document-release", + "gstack", + "health", + "investigate", + "ios-clean", + "ios-design-review", + "ios-fix", + "ios-qa", + "ios-sync", + "land-and-deploy", + "landing-report", + "learn", + "make-pdf", + "office-hours", + "open-gstack-browser", + "pair-agent", + "plan-ceo-review", + "plan-design-review", + "plan-devex-review", + "plan-eng-review", + "plan-tune", + "qa", + "qa-only", + "retro", + "review", + "scrape", + "setup-browser-cookies", + "setup-deploy", + "setup-gbrain", + "ship", + "skillify", + "spec", + "sync-gbrain" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-update-check" + }, + { + "name": "gstack-version-bump", + "source_path": "bin/gstack-version-bump", + "consumer_modules": [ + "ship" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/gstack-version-bump" + }, + { + "name": "make-pdf", + "source_path": "make-pdf/dist/pdf", + "consumer_modules": [ + "make-pdf" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/make-pdf" + }, + { + "name": "remote-slug", + "source_path": "browse/bin/remote-slug", + "consumer_modules": [ + "autoplan", + "plan-ceo-review", + "plan-devex-review", + "plan-eng-review" + ], + "stable_path": "${GSTACK_HOME:-$HOME/.gstack}/bin/remote-slug" + } + ], + "internal_execution_adapters": [ + { + "name": "system-functional", + "target": "skills/qa/references/SYSTEM-FUNCTIONAL.md", + "disposition": "SHARED_MODULE", + "composed_from": [ + "devex-review", + "qa", + "qa-only", + "investigate" + ], + "purpose": "Repository-native API, CLI, backend job, worker, and webhook execution while preserving report/fix and root-cause gates." + } + ], + "upstream_bug_fixes": [ + { + "pr": 610, + "url": "https://github.com/garrytan/gstack/pull/610", + "title": "Validate review findings before acting on them", + "targets": [ + "review" + ], + "anchor": "GSTACK2_FIX_610_FINDING_VALIDATION" + }, + { + "pr": 645, + "url": "https://github.com/garrytan/gstack/pull/645", + "title": "Classify non-application changes before review", + "targets": [ + "review" + ], + "anchor": "GSTACK2_FIX_645_PR_TYPE_TRIAGE" + }, + { + "pr": 679, + "url": "https://github.com/garrytan/gstack/pull/679", + "title": "Match the user language", + "targets": [ + "*" + ], + "anchor": "GSTACK2_FIX_679_MATCH_USER_LANGUAGE" + }, + { + "pr": 884, + "url": "https://github.com/garrytan/gstack/pull/884", + "title": "Treat requested human review as a hard landing gate", + "targets": [ + "ship", + "land-and-deploy" + ], + "anchor": "GSTACK2_FIX_884_HUMAN_REVIEW_GATE" + }, + { + "pr": 1071, + "url": "https://github.com/garrytan/gstack/pull/1071", + "title": "Make normalized data models the default", + "targets": [ + "plan-eng-review" + ], + "anchor": "GSTACK2_FIX_1071_DATA_MODEL_DEFAULTS" + }, + { + "pr": 1484, + "url": "https://github.com/garrytan/gstack/pull/1484", + "title": "Capture QA evidence per finding", + "targets": [ + "qa", + "qa-only" + ], + "anchor": "GSTACK2_FIX_1484_EVIDENCE_PER_FINDING" + }, + { + "pr": 1636, + "url": "https://github.com/garrytan/gstack/pull/1636", + "title": "Detect stale retrospective windows", + "targets": [ + "retro" + ], + "anchor": "GSTACK2_FIX_1636_STALE_RETRO_WINDOW" + }, + { + "pr": 1777, + "url": "https://github.com/garrytan/gstack/pull/1777", + "title": "Retain rejection confidence in design exploration", + "targets": [ + "design-shotgun" + ], + "anchor": "GSTACK2_FIX_1777_REJECTION_CONFIDENCE" + }, + { + "pr": 1920, + "url": "https://github.com/garrytan/gstack/pull/1920", + "title": "Infer the design system before auditing deviations", + "targets": [ + "design-review" + ], + "anchor": "GSTACK2_FIX_1920_INFER_DESIGN_SYSTEM" + }, + { + "pr": 2014, + "url": "https://github.com/garrytan/gstack/pull/2014", + "title": "Make autoplan phase skips auditable", + "targets": [ + "autoplan" + ], + "anchor": "GSTACK2_FIX_2014_AUTOPLAN_SCOPE_COUNTS" + }, + { + "pr": 2023, + "url": "https://github.com/garrytan/gstack/pull/2023", + "title": "Label single-model autoplan output honestly", + "targets": [ + "autoplan" + ], + "anchor": "GSTACK2_FIX_2023_SINGLE_VOICE_LABELS" + }, + { + "pr": 2030, + "url": "https://github.com/garrytan/gstack/pull/2030", + "title": "Record only signal-bearing learnings", + "targets": [ + "office-hours", + "plan-ceo-review", + "plan-eng-review", + "plan-devex-review", + "learn", + "design-consultation", + "plan-design-review", + "design-review", + "qa", + "qa-only", + "devex-review", + "scrape", + "skillify", + "investigate", + "review", + "cso", + "ship" + ], + "anchor": "GSTACK2_FIX_2030_SIGNAL_GATED_LEARNING" + }, + { + "pr": 2037, + "url": "https://github.com/garrytan/gstack/pull/2037", + "title": "Keep retrospectives language-agnostic and evidence-backed", + "targets": [ + "retro" + ], + "anchor": "GSTACK2_FIX_2037_RETRO_TEST_EVIDENCE" + }, + { + "pr": 2141, + "url": "https://github.com/garrytan/gstack/pull/2141", + "title": "Trace changed inputs into unchanged consumers", + "targets": [ + "review" + ], + "anchor": "GSTACK2_FIX_2141_UNCHANGED_CONSUMER_TRACE" + }, + { + "pr": 2186, + "url": "https://github.com/garrytan/gstack/pull/2186", + "title": "Harden operational judgment and release checks", + "targets": [ + "browse", + "canary", + "investigate", + "qa", + "ship" + ], + "anchor": "GSTACK2_FIX_2186_OPERATIONAL_HARDENING" + }, + { + "pr": 2189, + "url": "https://github.com/garrytan/gstack/pull/2189", + "title": "Accept coherent design-thesis framing", + "targets": [ + "design-consultation", + "plan-design-review", + "design-review" + ], + "anchor": "GSTACK2_FIX_2189_DESIGN_THESIS_EQUIVALENCE" + } + ] +} diff --git a/docs/gstack-2/PRIVACY.md b/docs/gstack-2/PRIVACY.md new file mode 100644 index 000000000..cc77efbfb --- /dev/null +++ b/docs/gstack-2/PRIVACY.md @@ -0,0 +1,145 @@ +# GStack 2 privacy boundary + +GStack 2 defaults to local judgment and local state. Optional network and +device capabilities are separated by explicit purpose and consent. Passing a +unit test is not a substitute for the remaining live egress audit listed in +[STATUS.md](./STATUS.md). + +## Data-flow summary + +| Capability | Default | May leave the machine | Never send | +|---|---|---|---| +| Six judgment skills | available | nothing by the skill text alone | project data to a new service without separate user/host authority | +| Standard installer | user-invoked, Markdown-only | repository/registry requests needed to fetch the skills | runtime dependencies, Context key, project content, browser credentials | +| Optional runtime/state | local, network off | nothing until a separately selected operation requires it | secrets in config/log output; one worktree's state to another | +| Context.dev | off, explicit consent required | public target URL and public extraction options | authenticated/private/local content, cookies, tokens, repo content, user files | +| Local browser | local daemon | navigation requests to sites the user directs it to; explicit legacy tunnels if separately enabled | browser profile/cookies to Context.dev or a cloud-browser provider | +| Physical iPhone | local Mac/device bridge | optional pre-existing Tailscale path only when explicitly configured | device session to a cloud-device farm or alternate driver provider | +| Telemetry | off in the GStack 2 contract | minimal legacy telemetry only after its independent opt-in | code, prompts, paths, repo/branch names, user content | + +Network installation is not Context.dev consent. Browser navigation is not +Context.dev consent. A key present in the environment is not consent. The +Context client requires persisted selection `context`, mode `context`, and +`network.consent: true` before DNS or fetch. Explicit selections `host`, +`local-browser`, and `none` persist with consent false. + +The deterministic Context contract is green at 22 pass / 0 fail and 139 +assertions. No verified key was available for a live provider smoke; those unit +results are not live-egress evidence. + +## Public Context.dev gate + +Before any provider request, the runtime rejects: + +- non-HTTP(S) schemes; +- URL usernames/passwords; +- localhost and `.localhost`; +- private/intranet/test/local suffixes and single-label hosts; +- loopback, private, link-local, unspecified, multicast, and mapped-private IPs; +- cloud metadata names/addresses; and +- a nominally public hostname if any resolved address is non-public. + +Allowed operations still receive only the public URL and necessary operation +parameters. Do not paste or synthesize cookies, authorization headers, private +page HTML, repository snippets, diffs, or prompts into a public-web request. +When a page requires login or its provenance is uncertain, use the local +browser and keep the content local. + +Context.dev credentials are read from protected runtime secrets or a deliberate +environment variable. Interactive setup uses hidden input. The CLI rejects +key-looking arguments, redacts known key formats from errors, and prevents +secret-looking config keys from entering public `config.json`. See +[CONTEXT-DEV.md](./CONTEXT-DEV.md). + +## Local browser boundary + +GStack retains its own loopback Chromium/Playwright daemon; no cloud-browser +backend has been added. Mutating commands require bearer authentication. +Existing tunnel support uses a separate deny-default listener and scoped +tokens; it exposes the local browser only after an explicit pairing action and +does not turn a hosted browser into a provider dependency. The current runtime +bundle includes the retained ngrok dependency closure for that explicit legacy +tunnel path; it does not add a cloud-browser provider. + +Imported cookies remain in the local browser context. Cookie values are not +displayed in the picker or sent to Context.dev. Page content, console messages, +network payloads, dialog text, screenshots, and downloaded files are untrusted +input to the agent, never operational instructions. + +Killing or cancelling a browser workflow must close its owned processes and +listeners without killing a sibling worktree's session. Full cancellation/leak +evidence remains a release gate. + +## Physical-iPhone boundary + +There is one device backend: the existing GStack DebugBridge over Apple's +CoreDevice tooling. It uses local `xcodebuild`, `devicectl`, signing, +provisioning, a CoreDevice tunnel, typed app state, screenshots, and coordinate +actions. Optional Tailscale exposure is retained only where already configured +and authorized. GStack does not use a cloud iPhone, Appium, Agent Device, or an +XCUITest backend abstraction. + +The bridge is debug-only. Release builds must contain no bridge symbols. GStack +must not overwrite an unrelated installed app or delete app data without +approval. It checks the expected bundle before and after coordinate mutations +and stops if focus changes. + +## State and worktree isolation + +State lives under `$GSTACK_HOME` or `~/.gstack`; there is no new database. The +runtime stores JSON/JSONL plus artifacts in a project directory derived from +both repository and worktree identity. Linked worktrees share a repository ID +but have distinct project IDs, so inspect/resume cannot silently select a +sibling. + +Writes use atomic replacement and lock leases. Secrets are `0600` where +supported. Durable external-effect claims prevent an uncertain post-crash +action from being repeated automatically. Human-readable files make audits and +manual recovery possible. + +Do not place secrets, cookies, private page dumps, or device credentials into +timeline/decision/evidence records. Evidence must be the minimum needed to +support the claim and must follow the source system's retention policy. + +## Models, images, and documents + +The current managed-bundle audit records 107 components, 1,830 files, +459,056,031 bytes, and 50 launchers. Setup installs frozen production-only +dependencies. The Sharp/ngrok closure is included; the development-only Claude +Agent SDK is excluded. The Hugging Face sidecar is excluded and its package is +development-only, so setup installs neither its inference runtime nor model +weights and reports the L4 capability unavailable. + +GStack 2 therefore downloads no model weights, checkpoints, LoRAs, or ComfyUI +runtime and starts no background image-model server. Host-native image +generation remains optional when the user and host already provide it. Design +works without it through systems, HTML/CSS, wireframes, screenshots, diagrams, +and critique. + +PDF and Mermaid/Excalidraw rendering remain local internal capabilities. No +hosted PDF or diagram service was introduced. + +## Disable and remove + +Turn Context network use off while preserving state: + +```bash +gstack context select none +``` + +Remove managed runtime versions while preserving config/project state: + +```bash +gstack uninstall +``` + +Purge all GStack 2 runtime state and secrets only with the explicit destructive +confirmation: + +```bash +gstack uninstall --purge --yes +``` + +Use the standard Agent Skills installer to remove skill placements. Removing +runtime state does not authorize GStack to edit unrelated host directories, +browser profiles, applications, or device data. diff --git a/docs/gstack-2/SCENARIOS.md b/docs/gstack-2/SCENARIOS.md new file mode 100644 index 000000000..caf9fbf8a --- /dev/null +++ b/docs/gstack-2/SCENARIOS.md @@ -0,0 +1,31 @@ +# GStack 2 routing scenarios + +The 25 executable fixtures route from structured stage/surface/authorization/evidence signals. Their prompts intentionally avoid public skill and mode names. + +| ID | Expected decision | Active | Mutation | Evidence basis | Gap | +|---|---|---|---|---|---| +| `idea-before-solution` | `plan:Discovery` | `office-hours` | `design-doc-only` | phase=pre-solution; premise_confidence=low | — | +| `scope-and-ambition` | `plan:Product` | `plan-ceo-review` | `plan-only` | artifact_exists=true; uncertainty=scope-strategy | — | +| `architecture-data-contracts` | `plan:Engineering` | `plan-eng-review` | `plan-only` | uncertainty=architecture-data; phase=implementation-design | — | +| `developer-first-onboarding` | `plan:DX` | `plan-devex-review` | `plan-only` | audience=developers; journey=onboarding | — | +| `cross-functional-decision` | `plan:Full chain` | `autoplan` | `plan-only` | review_axes_count=4; automatic_decisions=true | — | +| `backlog-ready-handoff` | `plan:Specification` | `spec` | `spec-and-issue` | output=executable-backlog-item; phase=handoff | — | +| `new-visual-system` | `design:Generate` | `design-consultation` | `design-artifacts` | surface=design-system; implementation_exists=false | — | +| `compare-directions` | `design:Explore` | `design-shotgun` | `design-artifacts` | alternatives_requested=true; output=comparison | — | +| `coded-marketing-surface` | `design:Implement` | `design-html` | `design-artifacts` | output=html-css; runtime_verification=true | — | +| `prebuild-interface-critique` | `design:Critique` | `plan-design-review` | `plan-only` | implementation_exists=false; artifact_exists=true | — | +| `implemented-interface-audit` | `design:Implement` | `design-review` | `fix-safe` | implementation_exists=true; mutation_authorized=true | — | +| `real-device-hig-audit` | `design:Critique` | `ios-design-review` | `report-only` | surface=ios; real_device=true | — | +| `browser-findings-only` | `qa:Report` | `qa-only` | `report-only` | surface=web; mutation_authorized=false | — | +| `browser-fix-and-verify` | `qa:Fix` | `qa` | `fix-safe` | surface=web; mutation_authorized=true | — | +| `device-state-journey` | `qa:Report` | `ios-qa` | `report-only` | surface=ios; real_device=true | — | +| `cli-api-journey` | `qa:Report` | `devex-review`, `qa-only`, `investigate`, `system-functional` | `report-only` | surface=developer-workflow; journey_measurement=true; functional_backend_harness=true | — | +| `measured-page-regression` | `qa:Report` | `benchmark` | `report-only` | measurement=performance; baseline_exists=true | — | +| `production-threshold-watch` | `qa:Report` | `canary` | `report-only` | deployed=true; thresholds_declared=true | — | +| `unknown-intermittent-cause` | `debug:Diagnose-only` | `investigate` | `investigate-only` | cause_known=false; intermittent=true | — | +| `reproducible-device-defect` | `debug:Fix` | `ios-fix` | `fix-safe` | platform=ios; reproducible=true | — | +| `ci-script-change-review` | `review:Normal` | `review` | `fix-safe` | change_exists=true; audit_focus=broad | — | +| `threat-surface-audit` | `review:Security` | `cso` | `report-only` | audit_focus=security; threat_model_required=true | — | +| `branch-to-pull-request` | `ship:Prepare` | `ship` | `commit-push-pr` | release_stage=working-branch; pr_exists=false | — | +| `approved-change-to-production` | `ship:Land` | `land-and-deploy` | `merge-deploy` | release_stage=approved-pr; deploy_requested=true | — | +| `post-release-doc-alignment` | `ship:Prepare` | `document-release` | `docs-only` | release_stage=post-ship; docs_drift=true | — | diff --git a/docs/gstack-2/SEMANTIC-PARITY.md b/docs/gstack-2/SEMANTIC-PARITY.md new file mode 100644 index 000000000..34a5f317d --- /dev/null +++ b/docs/gstack-2/SEMANTIC-PARITY.md @@ -0,0 +1,107 @@ +# Semantic parity evidence + +GStack 2 semantic parity uses the recorded 1.x base +`bb57306d98c97011b0919c6132705a15b1579781` as its primary oracle. It does not +ask a model to decide whether a rewrite is “close enough.” Each representative +fixture selects a specialist through structured product/evidence signals, then +compares the pinned host-rendered 1.x workflow with the legacy body loaded by +the GStack 2 dispatcher. + +Run: + +```bash +bun run scripts/gstack2/semantic-parity.ts +bun test test/gstack2-semantic-parity.test.ts +``` + +The first command writes reproducible evidence under +`evals/parity/transcripts/`: + +- 14 constitution-required suites and 15 executions (DX and specification are + separate executions); +- all 15 requested comparison dimensions per execution; +- exact workflow and semantic-signature hashes; +- all 16 carved-section comparisons; +- authority-policy unit cases for evidence, trust boundaries, physical-device + substitution, mutation authority, and structured routing; +- every linked bug-fix difference classified as `INTENTIONAL_IMPROVEMENT` with + its upstream PR and regression fixture. + +The current deterministic manifest is green: **295 checks across 14 suites, +15 executions, 15 dimensions, 16 carved sections, and nine authority-policy +unit cases**. Its base is +`bb57306d98c97011b0919c6132705a15b1579781` and it explicitly records that a +live model is not required for the primary verdict. + +Exact preserved bodies are stronger evidence than an LLM similarity score: +questions, order, pressure, smart skips, rubrics, gates, evidence, artifacts, +mutation, exits, recommendations, and voice cannot disappear while normalized +full-body equality holds. The structured route and authority-policy units cover +deterministic controls that exist outside those bodies. They start from a +hand-authored semantic operation envelope, so they are policy-unit evidence, +not proof that a live host correctly decodes a hostile natural-language +request. This is deterministic policy evidence, not behavioral-adversarial +proof. + +The installed-host lane currently has no passing live run. V1 **failed**. The +immutable v2 run also **failed**: QA passed, while debug, review, and ship were +false negatives caused by the v2 read-only-Git warning classifier. Its artifact +is +[`2026-07-17T04-09-01-809Z-3d23a270.json`](../../evals/host-adversarial/runs/2026-07-17T04-09-01-809Z-3d23a270.json), +SHA-256 +`7ab15ea575cb9a634b7d00212dd9d74902b1188281ae6a503a32ccf382facbf5`. +The v3 offline harness is green at 18 pass / 0 fail and 111 assertions, but live +v3 has not run and has no artifact. The P0 gate therefore remains open. See the +[installed-host evidence overview](../../evals/host-adversarial/README.md). + +## Optional live-model supplement + +A paid, non-deterministic comparison is opt-in and is never the primary gate: + +```bash +GSTACK2_LIVE_SEMANTIC=1 bun run scripts/gstack2/semantic-parity.ts \ + --live --model= --limit=15 --max-budget-usd=0.25 --resume-live +``` + +The live runner uses Claude CLI bare mode with session persistence, slash +commands, browser integration, and tools all disabled. It requests one turn +per actor and judge and passes a USD 0.25 per-call budget by default +(configurable up to USD 1.00), rejects credential-shaped prompts, records the +exact prompts and model, redacts credential-shaped output, and writes +structured baseline/candidate responses plus a 15-dimension judge result under +`evals/parity/transcripts/live//`. The CLI budget is not a hard +preauthorization ceiling: one observed provider call reported USD 0.81 after a +USD 0.25 limit was supplied. Treat the setting as a guardrail, stop on an +overage, and never loop until a favorable verdict. A model is not allowed to +overrule a deterministic regression or unexplained loss, and human review +remains authoritative for disputed results. + +`--resume-live` reuses only a non-regression transcript produced by the exact +same model, per-call budget, and baseline/candidate/judge prompt hashes. It +never reuses evidence across model, budget, or prompt changes. + +### Current live evidence + +The retained Claude Haiku evidence is **not green**: + +- `live/attempts/office-hours-haiku-v1-regression.json` records a regression + from the earlier visible generated-wrapper prompt; +- `live/claude-haiku-4-5-20251001/ceo-review.json` also predates the current + invisible thin wrapper and is prompt-stale; and +- `live/claude-haiku-4-5-20251001/office-hours.json` is a post-wrapper sample + classified `REGRESSION`, in part because the independently sampled baseline + response included details that its own sample omitted elsewhere even though + the candidate's source body is byte-preserved. + +These files expose two separate facts: visible wrapper prose can bias an actor, +and independent first-turn summaries can create apparent losses even when the +underlying source is identical. The wrapper was reduced to an invisible, +five-line-or-smaller provenance prelude and that invariant is now structural. +The remaining sampling variance is why live evaluation stays supplemental. +None of the three transcripts is release-pass evidence, and an obsolete prompt +must not be silently reused or overwritten. + +`bun run gen:gstack2` refreshes the deterministic contracts, scenarios, +regressions, and manifest while preserving `evals/parity/transcripts/live/`. +Run deterministic semantic parity after the generator when preparing final +release evidence; do not let regeneration erase unfavorable live history. diff --git a/docs/gstack-2/SKILL-MIGRATION.md b/docs/gstack-2/SKILL-MIGRATION.md new file mode 100644 index 000000000..1b30505ce --- /dev/null +++ b/docs/gstack-2/SKILL-MIGRATION.md @@ -0,0 +1,79 @@ +# GStack 2 skill migration + +Pinned baseline: `bb57306d98c97011b0919c6132705a15b1579781`. + +GStack 2 exposes exactly six public Codex skills: `plan`, `design`, `qa`, `debug`, `review`, and `ship`. The 55 legacy templates remain mechanically rendered as internal reference modules; all 16 carved section templates are inlined with the canonical Codex resolver path. Thirty-one primary modules are mandatory specialist inputs, and 24 supporting modules remain reachable through compatibility routing. + +The fixed public modes are: Design = `Explore | Generate | Critique | Implement`; QA = `Report | Fix`; Debug = `Diagnose-only | Fix`; Review = `Normal | Security | Performance | Deep`; Ship = `Prepare | Land | Deploy | Monitor | Resume`. Richer legacy modes are internal aliases only. + +## Migration map + +| Legacy invocation | Replacement | Visibility | Mandatory | Judgment overlays | +|---|---|---|---|---| +| `/gstack` | `$plan --mode Discovery --module gstack` | internal (internal) | no | #679 | +| `/office-hours` | `$plan --mode Discovery --module office-hours` | internal (primary) | yes | #679, #2030 | +| `/plan-ceo-review` | `$plan --mode Product --module plan-ceo-review` | internal (primary) | yes | #679, #2030 | +| `/plan-eng-review` | `$plan --mode Engineering --module plan-eng-review` | internal (primary) | yes | #679, #1071, #2030 | +| `/plan-devex-review` | `$plan --mode DX --module plan-devex-review` | internal (primary) | yes | #679, #2030 | +| `/autoplan` | `$plan --mode Full chain --module autoplan` | internal (primary) | yes | #679, #2014, #2023 | +| `/spec` | `$plan --mode Specification --module spec` | internal (primary) | yes | #679 | +| `/plan-tune` | `$plan --mode Discovery --module plan-tune` | internal (primary) | yes | #679 | +| `/context-save` | `$plan --mode Discovery --module context-save` | internal (internal) | no | #679 | +| `/context-restore` | `$plan --mode Discovery --module context-restore` | internal (internal) | no | #679 | +| `/learn` | `$plan --mode Discovery --module learn` | internal (internal) | no | #679, #2030 | +| `/retro` | `$plan --mode Discovery --module retro` | internal (internal) | no | #679, #1636, #2037 | +| `/setup-gbrain` | `$plan --mode Discovery --module setup-gbrain` | internal (internal) | no | #679 | +| `/sync-gbrain` | `$plan --mode Discovery --module sync-gbrain` | internal (internal) | no | #679 | +| `/design-consultation` | `$design --mode Generate --module design-consultation` | internal (primary) | yes | #679, #2030, #2189 | +| `/design-shotgun` | `$design --mode Explore --module design-shotgun` | internal (primary) | yes | #679, #1777 | +| `/design-html` | `$design --mode Implement --module design-html` | internal (primary) | yes | #679 | +| `/plan-design-review` | `$design --mode Critique --module plan-design-review` | internal (primary) | yes | #679, #2030, #2189 | +| `/design-review` | `$design --mode Implement --module design-review` | internal (primary) | yes | #679, #1920, #2030, #2189 | +| `/ios-design-review` | `$design --mode Critique --module ios-design-review` | internal (primary) | yes | #679 | +| `/diagram` | `$design --mode Generate --module diagram` | internal (internal) | no | #679 | +| `/make-pdf` | `$design --mode Generate --module make-pdf` | internal (internal) | no | #679 | +| `/qa` | `$qa --mode Fix --module qa` | internal (primary) | yes | #679, #1484, #2030, #2186 | +| `/qa-only` | `$qa --mode Report --module qa-only` | internal (primary) | yes | #679, #1484, #2030 | +| `/ios-qa` | `$qa --mode Report --module ios-qa` | internal (primary) | yes | #679 | +| `/devex-review` | `$qa --mode Report --module devex-review` | internal (primary) | yes | #679, #2030 | +| `/benchmark` | `$qa --mode Report --module benchmark` | internal (primary) | yes | #679 | +| `/canary` | `$qa --mode Report --module canary` | internal (primary) | yes | #679, #2186 | +| `/browse` | `$qa --mode Report --module browse` | internal (internal) | no | #679, #2186 | +| `/open-gstack-browser` | `$qa --mode Report --module open-gstack-browser` | internal (internal) | no | #679 | +| `/setup-browser-cookies` | `$qa --mode Report --module setup-browser-cookies` | internal (internal) | no | #679 | +| `/pair-agent` | `$qa --mode Report --module pair-agent` | internal (internal) | no | #679 | +| `/scrape` | `$qa --mode Report --module scrape` | internal (internal) | no | #679, #2030 | +| `/skillify` | `$qa --mode Report --module skillify` | internal (internal) | no | #679, #2030 | +| `/benchmark-models` | `$qa --mode Report --module benchmark-models` | internal (internal) | no | #679 | +| `/investigate` | `$debug --mode Diagnose-only --module investigate` | internal (primary) | yes | #679, #2030, #2186 | +| `/ios-fix` | `$debug --mode Fix --module ios-fix` | internal (primary) | yes | #679 | +| `/careful` | `$debug --mode Diagnose-only --module careful` | internal (internal) | no | #679 | +| `/freeze` | `$debug --mode Diagnose-only --module freeze` | internal (internal) | no | #679 | +| `/guard` | `$debug --mode Diagnose-only --module guard` | internal (internal) | no | #679 | +| `/unfreeze` | `$debug --mode Diagnose-only --module unfreeze` | internal (internal) | no | #679 | +| `/review` | `$review --mode Normal --module review` | internal (primary) | yes | #610, #645, #679, #2030, #2141 | +| `/cso` | `$review --mode Security --module cso` | internal (primary) | yes | #679, #2030 | +| `/health` | `$review --mode Deep --module health` | internal (primary) | yes | #679 | +| `/codex` | `$review --mode Deep --module codex` | internal (primary) | yes | #679 | +| `/claude` | `$review --mode Deep --module claude` | internal (primary) | yes | #679 | +| `/ship` | `$ship --mode Prepare --module ship` | internal (primary) | yes | #679, #884, #2030, #2186 | +| `/land-and-deploy` | `$ship --mode Land --module land-and-deploy` | internal (primary) | yes | #679, #884 | +| `/landing-report` | `$ship --mode Prepare --module landing-report` | internal (primary) | yes | #679 | +| `/document-release` | `$ship --mode Prepare --module document-release` | internal (primary) | yes | #679 | +| `/setup-deploy` | `$ship --mode Deploy --module setup-deploy` | internal (primary) | yes | #679 | +| `/document-generate` | `$ship --mode Prepare --module document-generate` | internal (internal) | no | #679 | +| `/gstack-upgrade` | `$ship --mode Prepare --module gstack-upgrade` | internal (internal) | no | #679 | +| `/ios-clean` | `$ship --mode Prepare --module ios-clean` | internal (internal) | no | #679 | +| `/ios-sync` | `$ship --mode Prepare --module ios-sync` | internal (internal) | no | #679 | + +## Intentional behavioral gaps + +1. **Global Context search:** deprecated. Explicit context save/restore remains available as internal plan modules, but no dispatcher claims an unbounded global search across historical Context state. +2. **Outside voices:** a host cannot invoke itself as an independent outside reviewer. The relevant module reports unavailable model diversity instead of claiming consensus. +3. **External prerequisites:** browser credentials, real-device bridges, repository permissions, review approvals, CI, and deploy providers remain required external state. Compatibility does not synthesize them. + +## Mechanical versus judgment changes + +- `MECHANICAL_PORT`: canonical Codex resolver expansion, section inlining, safety prose, and path rewrites only. +- `BUG_FIX`: the mechanical body plus a clearly delimited judgment overlay sourced from one of the 16 upstream PRs and its regression fixture. +- Asset relocation is byte-for-byte from the pinned Git blob and is indexed per tree. diff --git a/docs/gstack-2/STATUS.md b/docs/gstack-2/STATUS.md index da1e78083..de411045f 100644 --- a/docs/gstack-2/STATUS.md +++ b/docs/gstack-2/STATUS.md @@ -1,56 +1,175 @@ -# GStack 2.0 status +# GStack 2 status -**Current state: BASELINED AND MAPPED — NOT IMPLEMENTED, NOT VERIFIED, NOT -DONE.** +**Status at the 2026-07-17 documentation checkpoint: `BLOCKED`.** -This checklist separates evidence capture from delivery so generated plans or -passing narrow tests cannot be mistaken for a completed rewrite. +The candidate contains substantial implementation, but it is not a released or +verified GStack 2. `DONE` is prohibited until every P0 gate is backed by the +required evidence layer. Current blockers include physical-iPhone signing, a +verified Context.dev key smoke, native Windows CI, a passing live v3 +installed-host adversarial run, native Linux evidence, and the signed physical +iPhone loop. No branch push, draft PR, or PR-ready claim is authorized by this +status. -## Phase checklist +## Implemented candidate surface -- [x] Freeze the audit base at +- [x] Pinned audit base: `bb57306d98c97011b0919c6132705a15b1579781`. -- [x] Record template/output/section, line, byte, repeated-preamble, catalog, - host, and installer-discovery baselines. -- [x] Capture the baseline command logs without relabeling pre-existing - failures as passes. -- [x] Flatten and reconcile every frozen open issue/PR snapshot into one - deterministic map (755 unique items from 1,184 endpoint records). -- [x] Trace all 16 required PRs to their detail snapshots, changed-file - snapshots, component, judgment module, and replacement-test contract. -- [ ] Review and approve the GStack 2.0 architecture and migration contract. -- [ ] Convert heuristic backlog dispositions into accepted product/engineering - decisions. `NEEDS_EVIDENCE` is intentionally the majority disposition. -- [ ] Implement the consolidated judgment modules and runtime components. -- [ ] Implement the replacement contract tests named in `BACKLOG-MAP.json`. -- [ ] Prove legacy setup migration and standard-installer discovery without - root/nested skill shadowing. -- [ ] Prove behavior and safety parity across all 10 generated hosts. -- [ ] Re-run the broad, Windows-safe, design, and iOS suites with complete - terminal summaries; separate repaired baseline failures from regressions. -- [ ] Produce release evidence and make an explicit ship/no-ship decision. +- [x] Baseline counts and pre-existing failures captured without relabeling + them candidate regressions. +- [x] 755 unique open issue/PR records reconciled and deterministically mapped; + all 16 required upstream PR snapshots traced. +- [x] Exactly six canonical skill directories: `plan`, `design`, `qa`, + `debug`, `review`, and `ship`. +- [x] The six `/plan` top-level modes are exactly **Discovery, Product, + Engineering, DX, Specification, and Full chain**. +- [x] Standard installer matrix is green: 470/470 checks, 16 installs and two + removals with CLI 1.5.19. Project/global installs passed for Claude Code, + Codex, Cursor, Pi, OpenClaw, and GitHub Copilot; selected-skill and opt-in + compatibility-alias cases, paths with spaces, source symlink, physical + copies, and canonical hashes passed. The committed artifact is + [`evals/installation/install-matrix.json`](../../evals/installation/install-matrix.json). +- [x] Current six names/descriptions measure 982 characters (about 246 + four-character token-equivalents), roughly 77.6% below the correctly parsed + baseline of about 1,100 in the regenerated tree. +- [x] Generated inventory contains 55 preserved modules, 16 carved sections, + 25 scenarios, 16 regression definitions, and 78 assets. +- [x] Compatibility aliases remain opt-in and outside default six-skill + discovery; each prints its replacement and contains no copied judgment. +- [x] Judgment provenance, behavioral contracts, 25 structured scenarios, and + 16 upstream bug-fix regression definitions implemented. +- [x] The 2026-07-17 regenerated parity rerun is green: 4,681 checks covering + 55 modules, 16 sections, 25 scenarios, 16 regressions, and 78 assets. +- [x] Deterministic semantic parity is green: 295 checks across 14 suites, 15 + executions, 15 comparison dimensions, 16 carved sections, and nine + authority-policy unit cases, including unsupported numeric claims. Exact + preserved source bodies are the primary + oracle. These are deterministic policy checks, not behavioral-adversarial + proof, and do not close the installed-host gate. All + three retained Claude Haiku live samples are classified `REGRESSION`; they + are preserved as noisy supplemental evidence, never cherry-picked as a + primary gate or represented as green. +- [x] The focused GStack 2 suite is green: 130 pass / 0 fail, 1,071 + assertions across 15 files. This focused surface does not substitute for the + broad or native-platform gates. +- [x] Optional host-neutral runtime implemented with canonical paths, + repo/worktree state identity, locks, atomic writes, effect claims, + doctor/config/state/cleanup, migrations, upgrade/rollback, and uninstall. +- [x] Managed runtime installer coverage is green at 21 pass / 0 fail and 307 + assertions. The current managed bundle audit records 107 components, 1,830 + files, 459,056,031 bytes, and 50 launchers. Setup installs frozen + production-only dependencies; the development-only Claude Agent SDK is + excluded. The Sharp/ngrok closure is included. The Hugging Face sidecar is + excluded and its package is development-only, so setup installs neither its + inference runtime nor model weights and reports the L4 + capability unavailable. A clean Linux arm64 container smoke also used the + production-only install with the development SDK absent, completed a local + browser journey and Sharp full-page screenshot, and uninstalled while + preserving state. +- [x] Filesystem lifecycle coverage passes for clean install/uninstall, + paths with spaces, source symlinks with internal-link rejection, read-only + destination reporting on macOS, interrupted-pointer rollback, crash-journal + repair, and last-known-good launcher recovery. +- [x] Crash/resume external-effect idempotency is covered through an actual + local Git push: the effect executes at most once, and resume refuses to + repeat a command that may already have happened. +- [x] Context.dev public-URL/consent/failure contract is green at 22 pass / 0 + fail and 139 assertions; deprecated search is typed unsupported rather than + fabricated. `context options` and explicit + `context select host|local-browser|none` choices persist without granting + Context.dev consent. No verified key was available for the live smoke. +- [x] iOS candidate fixes implemented for UDID/CoreDevice identity, malformed + device-list errors, suspended-app bounded timeout, and active-bundle checks. +- [x] Default/free-test roots now include `design/test` and + `ios-qa/daemon/test`. +- [x] Focused retained capability suites are green: iOS daemon 95 pass / 0 fail + / 229 assertions; design 101 pass / 0 fail / 381 assertions; PDF 189 pass / 0 + fail / 398 assertions; and diagram 51 pass / 0 fail / 1 skip / 120 + assertions. The opt-in paid diagram lane recorded two skips and is not live + provider evidence. +- [x] Physical-iOS preflight recorded 9 pass / 0 fail / 1 deploy skip and 29 + assertions. The direct smoke then returned typed code + `signing_unavailable`, category `setup_gate`; it installed no app and wrote no + pass artifact. +- [x] Installed-host adversarial evidence is retained without relabeling: + v1 **failed**; immutable v2 **failed** even though QA passed because the + classifier produced false negatives for debug, review, and ship; v3 offline + harness coverage is green at 18 pass / 0 fail and 111 assertions. Live v3 + has not run and has no artifact, so there is no passing live installed-host + adversarial result. +- [x] A current managed-bundle audit confirms no model-weight download path in + setup. The standard Agent Skills installation remains Markdown-only and + independent of the optional runtime. +- [x] An isolated local-browser journey completed navigation, snapshot, + screenshot, status, and stop cleanup. The stop acknowledgement regression + has a 2 pass / 0 fail focused test. +- [x] The uninterrupted macOS broad suite is green under singleton isolation: + 6,234 pass / 226 expected skips / 0 fail and 25,392 assertions across all + 383 files. This includes the complete local-browser suite. The local + Windows-safe singleton lane is also green at 2,813 pass / 57 expected skips + / 0 fail and 8,562 assertions across all 213 curated files; it is not native + Windows evidence. +- [x] Architecture, privacy, Context.dev, host compatibility, upgrade/rollback, + migration, and governance documentation added. + +## Blocking or incomplete P0 evidence + +- [ ] Record a passing live v3 installed-host adversarial run and execute the + installed skill in each representative host UI. The six hosts are **Verified + at the installer layer only**; v1 and v2 are retained failed runs, and v3 is + offline-harness evidence only. +- [ ] Prove runtime-absent judgment behavior through an actual host invocation. + Runtime install failure and the real default capability lifecycle are covered. +- [ ] Complete native Linux and Windows matrices. The uninterrupted macOS + broad singleton run is green at 6,234/226/0 across 383 files, and the local + Windows-safe singleton lane is green at 2,813/57/0 across 213 files. Neither + substitutes for native execution on its named platform. +- [ ] Integrate the passing complete local-browser suite and live journey into + final cancellation/leak evidence. The production dependency and managed + bundle audit contains no cloud-browser provider/path. +- [ ] Complete a live Context.dev smoke with a verified account/key. No verified + key was available at this checkpoint; the 22-test automated contract is not + provider evidence. +- [ ] Complete the physical-iPhone five-check loop with a signed test app. The + unsigned Release guard and preflight passed, but the direct smoke returned + `signing_unavailable` / `setup_gate`; no app was installed and no pass artifact + exists. This is a remediable account/provisioning gate. +- [ ] Verify in one real cancellation run that no subprocess, listener, + credential, browser, or device-session remains after interruption. Existing + component tests cover each cleanup contract separately but not this aggregate + live gate. +- [ ] Finish final evidence-linked disposition for every infrastructure item; + see the 25-row table in [ARCHITECTURE.md](./ARCHITECTURE.md). Current focused + evidence does not replace the remaining live and native-platform gates. ## Evidence index | Evidence | Path | State | |---|---|---| -| Measured baseline | [`BASELINE.md`](./BASELINE.md) | Recorded | -| Baseline command results and failures | [`TEST-EVIDENCE.md`](./TEST-EVIDENCE.md) | Recorded; baseline is not green | -| Deterministic backlog generator | [`../../scripts/gstack2/generate-backlog-map.ts`](../../scripts/gstack2/generate-backlog-map.ts) | Implemented and locally validated | -| Complete mapped backlog | [`BACKLOG-MAP.json`](./BACKLOG-MAP.json) | Generated from frozen snapshots | -| Baseline logs | `/tmp/gstack2-baseline-logs/` | External/ephemeral audit evidence | -| time-attack snapshots | `/tmp/gstack2-{open-items,open-prs,label}-pages.json` | External/ephemeral frozen input | -| garrytan snapshots | `/tmp/gstack2-upstream-{open-items,open-prs,label}-pages.json` | External/ephemeral frozen input | -| Required PR evidence | `/tmp/gstack2-port-prs/{610,...,2189}{,-files}.json` | External/ephemeral frozen input | +| Measured baseline | [BASELINE.md](./BASELINE.md) | Recorded | +| Candidate and baseline command ledger | [TEST-EVIDENCE.md](./TEST-EVIDENCE.md) | Broad macOS and local Windows-safe singleton runs green; live/native-platform gates pending | +| Complete skill migration | [SKILL-MIGRATION.md](./SKILL-MIGRATION.md) | Generated; 55/55 assignments | +| Judgment provenance | [JUDGMENT-PROVENANCE.json](./JUDGMENT-PROVENANCE.json) | Generated; 4,681-check parity rerun green | +| Parity contract | [JUDGMENT-PARITY.md](./JUDGMENT-PARITY.md) | Green for source/render/contract/asset fixtures | +| Semantic parity | [SEMANTIC-PARITY.md](./SEMANTIC-PARITY.md) | Deterministic 295-check corpus green; retained live samples are regressions | +| Installed-host adversarial | [eval overview](../../evals/host-adversarial/README.md), [immutable v2 artifact](../../evals/host-adversarial/runs/2026-07-17T04-09-01-809Z-3d23a270.json) | V1 failed; immutable V2 failed; V3 offline 18/111 green, live V3 not run; no passing live run | +| Structured scenarios | [SCENARIOS.md](./SCENARIOS.md) | 25/25 structured routing fixtures green | +| Backlog traceability | [BACKLOG-MAP.json](./BACKLOG-MAP.json) | 755 unique items mapped | +| Context integration | [CONTEXT-DEV.md](./CONTEXT-DEV.md) | Automated contract 22/139 green; live smoke blocked on verified key | +| Host matrix | [HOST-COMPATIBILITY.md](./HOST-COMPATIBILITY.md) | 470/470 checks; six hosts Verified at installer layer; live v3/UI launch pending | +| Privacy boundary | [PRIVACY.md](./PRIVACY.md) | Implemented contract; full retained-tool egress audit pending | +| Physical iOS | [IOS-PHYSICAL-DEVICE.md](./IOS-PHYSICAL-DEVICE.md) | Preflight 9 pass / 1 deploy skip / 29 assertions; signing blocked; no app/pass artifact | +| Upgrade/recovery | [UPGRADE-AND-ROLLBACK.md](./UPGRADE-AND-ROLLBACK.md) | Runtime installer 21 pass / 307 assertions; current bundle audit recorded | ## Interpretation rules -- `PORT_JUDGMENT` means “port the decision/policy with a replacement test,” - not “apply the upstream patch verbatim.” -- `FIX_IN_GSTACK_2` still requires a reproduced defect. +- `MECHANICAL_PORT` means the pinned rendered judgment body remains equal after + normalization; it is not permission to rewrite prose. +- `BUG_FIX` requires its linked PR/reproduction and regression fixture. - `NEEDS_EVIDENCE`, `DEFER_COMMUNITY`, and - `SUPERSEDED_BY_CONSOLIDATION` remain review decisions, not closed GitHub - items. The generator performs no external mutation. -- The heuristic map is deterministic triage. Title-first and narrow body rules - make it auditable, but human approval is still required before implementation - or upstream disposition changes. + `SUPERSEDED_BY_CONSOLIDATION` are auditable dispositions, not GitHub state + changes. No labels, issues, or PRs are mutated by the map generator. +- A fixture-backed structural result does not replace a live browser, physical + device, external account, native OS, or host-install result where the gate + explicitly requires one. +- Do not market or release this branch as GStack 2 while this status is + `BLOCKED`. diff --git a/docs/gstack-2/TEST-EVIDENCE.md b/docs/gstack-2/TEST-EVIDENCE.md index 8de8d2aad..39a87d005 100644 --- a/docs/gstack-2/TEST-EVIDENCE.md +++ b/docs/gstack-2/TEST-EVIDENCE.md @@ -1,4 +1,77 @@ -# GStack 2.0 baseline test evidence +# GStack 2.0 test evidence + +## Candidate checkpoint — 2026-07-17 + +These results describe the working tree at the documentation checkpoint. They +are deliberately narrower than the P0 release matrix. Commands that need a +provider account, signed physical app, native OS, or live host are not marked +pass from deterministic, offline, or filesystem-only evidence. + +| Command / probe | Observed result | What it proves / does not prove | +|---|---|---| +| Focused `bun test test/gstack2-*.test.ts` candidate run | **Exit 0: 130 pass / 0 fail**, 1,071 assertions across 15 files. Log: `/tmp/gstack2-direct-release.log`. | The focused GStack 2 routing/runtime/privacy/installer/upgrade and deterministic parity surface is green. It is not the broad repository or native-platform gate. | +| `bun test --timeout 30000 test/gstack2-skills.test.ts test/gstack2-skills-routing.test.ts` after regeneration | **Exit 0: 3 pass / 0 fail**, 81 assertions. | The pinned corpus/parity test and both 25-scenario structured-routing tests are green. This remains structural/fixture evidence, not specialist live execution. | +| `bun run scripts/gstack2/run-parity.ts`, 2026-07-17 rerun | **Exit 0: 4,681 checks passed**; 55 modules, 16 sections, 25 scenarios, 16 regressions, 78 assets. | Current source/render/provenance/contract/asset/fixture parity is green. It is deterministic parity, not live-host behavior. | +| Earlier regenerated structural parity checkpoint | **Exit 0: 2,403 checks passed** with the then-current 55/16/25/16/45 inventory. | Historical candidate checkpoint before later thin-prelude and asset coverage; superseded by the current 4,681-check rerun. | +| Earlier combined runtime/parity run before regeneration | **Exit 1: 20 pass / 1 fail**, 161 assertions. All 18 runtime tests and both routing tests passed; parity hit the default 5s timeout. A separate long-timeout attempt reported 29 stale-generation checks. | Preserved as history: generator inputs had changed. The post-regeneration rows above supersede the parity failure, not the runtime results. | +| `bun run scripts/gstack2/semantic-parity.ts` and `bun test test/gstack2-semantic-parity.test.ts` | **Deterministic corpus green: 295 checks**, 14 suites, 15 executions, all 15 dimensions, 16 carved sections, and nine authority-policy unit cases, including unsupported numeric claims. | Exact source-body and semantic-signature evidence is the primary reproducible oracle. The policy units consume hand-authored semantic operation envelopes; they are deterministic policy evidence, not behavioral-adversarial proof. | +| Retained Claude Haiku live semantic transcripts | **Three retained samples, all classified `REGRESSION`.** Two samples used now-obsolete visible-wrapper prompts. The current office-hours sample also penalizes independently sampled omissions even though those details remain byte-preserved in the candidate source. | Live-model sampling is supplemental and currently not green. These results must not be retried until favorable, cherry-picked, or used to overrule deterministic source loss. See [SEMANTIC-PARITY.md](./SEMANTIC-PARITY.md). | +| Installed-host adversarial v1 | **FAILED.** The immutable v1 slash-invocation artifact is retained. | Unfavorable activation/classifier evidence; not a behavioral pass. See [eval overview](../../evals/host-adversarial/README.md). | +| Installed-host adversarial v2 | **FAILED.** QA passed, while debug, review, and ship were false negatives from the v2 read-only-Git warning classifier. | All four dispatchers activated, but the top-level run failed and must stay failed. Immutable artifact: [`2026-07-17T04-09-01-809Z-3d23a270.json`](../../evals/host-adversarial/runs/2026-07-17T04-09-01-809Z-3d23a270.json), SHA-256 `7ab15ea575cb9a634b7d00212dd9d74902b1188281ae6a503a32ccf382facbf5`. | +| Installed-host adversarial v3 offline harness | **18 pass / 0 fail**, 111 assertions. | The classifier fix and offline harness are covered. Live v3 has **not run** and has no artifact; there is no passing live installed-host adversarial run. | +| Six-skill catalog measurement after regeneration | Six names/descriptions total 982 characters, about 246 four-character token-equivalents; baseline correctly parsed catalog was about 1,100. | 77.6% reduction, above the 75% gate. Re-measure if frontmatter changes. The buggy 4,214 baseline estimate is not used. | +| `bun test ios-qa/daemon/test` | **95 pass / 0 fail**, 229 assertions. | Covers daemon regressions including malformed device JSON, hardware-UDID/CoreDevice selection, bounded proxy timeout, and expected-bundle mutation header. It is not a signed-app live pass. | +| Focused DebugBridge/template build tests | **33 pass / 0 fail** in the candidate run, including Swift debug compilation/XCTest and Release symbol absence. | Static/build evidence for debug-only bridge wiring; still not an installed physical-app journey. | +| Physical-iOS E2E preflight | **9 pass / 0 fail / 1 deploy check skipped**, 29 assertions. | The connected-device/setup and unsigned Release checks pass. The deploy skip leaves the signed-device P0 gate open. | +| Direct physical-device smoke | **Typed failure:** code `signing_unavailable`, category `setup_gate`. | Automatic signing/provisioning is the remediable blocker. No app was installed or launched and no pass artifact was written. This is neither a product failure nor a pass. | +| Context.dev contract (`gstack2-runtime-context.test.ts`) | **22 pass / 0 fail**, 139 assertions. | Persists explicit host/local-browser/none choices without consent, rejects private/credential URLs and request material plus private DNS, proves zero lookup/fetch before mode+consent, validates documented endpoint paths and exact failure taxonomy, and makes search typed unsupported without network. | +| `gstack context smoke` | **Not run:** `CONTEXT_DEV_API_KEY` is not configured and no verified account key was available. | Live provider behavior, account verification, and actual credit metadata remain unverified. | +| Standard installer matrix | **PASS: 470/470 checks**, 16 install cases, two removal cases, `skills` CLI 1.5.19. | Project/global installs pass for six hosts, selected-skill and opt-in compatibility-alias cases, copies, and hashes. This remains installer/filesystem evidence. Committed artifact: [`evals/installation/install-matrix.json`](../../evals/installation/install-matrix.json). | +| `bun test test/gstack2-runtime-install.test.ts` | **Exit 0: 21 pass / 0 fail**, 307 assertions. | Managed allowlist, hashes, spaces, source/internal-link rejection, production-only frozen dependencies, capability closure, rollback/recovery, stable launchers, wrapper neutrality, and state-preserving uninstall pass. | +| Current managed runtime bundle audit | **107 components, 1,830 files, 459,056,031 bytes, 50 launchers.** | Setup includes the Sharp/ngrok closure and excludes the development-only Claude Agent SDK. The Hugging Face sidecar is outside the bundle and its package is development-only, so production setup installs neither its inference runtime nor model weights; the L4 capability reports unavailable. The standard skill installer remains Markdown-only. | +| Declared Dev Container build plus `bun run test:gstack2` inside it | **Container image built; Exit 0: 43 pass / 0 fail, 265 assertions.** | Focused canonical-skill, routing, parity, state, privacy, and runtime behavior is green in the declared Linux container. This is not a native-host broad Linux run. | +| `scripts/gstack2/runtime-install-smoke.sh` in the clean Linux arm64 container | **Pass:** production-only frozen dependencies installed with the development Agent SDK and Hugging Face/ONNX runtime absent; the managed Anthropic SDK, Sharp, and ngrok imports passed; prebuilt capabilities rebuilt; setup/doctor/version/design/PDF passed; a local-browser journey and Sharp full-page screenshot passed; uninstall preserved state. | Proves a source copy with spaces can build and complete the managed runtime lifecycle without Git history, an executable local-model stack, or Darwin-only iOS artifacts. It is not native Windows evidence. | +| Runtime lifecycle and external-effect matrix | **Pass:** real filesystem/subprocess tests cover clean install/uninstall, paths with spaces, source symlinks and internal-link rejection, macOS read-only reporting, interrupted-pointer rollback, crash-journal repair, last-known-good launcher recovery, and an actual local Git push that executes at most once across resume. | Closes the named local filesystem/recovery/idempotency gates. The aggregate live cancellation/leak gate remains open. | +| `bun test design/test` | **101 pass / 0 fail**, 381 assertions. | The retained design suite is green and is also included in the later uninterrupted broad pass. | +| `bun test make-pdf/test` plus combined-fixture render | **189 pass / 0 fail, 398 assertions;** four PDF pages rendered to PNG and visually inspected with no detected layout defect. | Retained strict PDF tests and a live internal render are green on this macOS host. Cross-platform visual equivalence remains a separate platform claim. | +| Diagram suites | **51 pass / 0 fail / 1 skip**, 120 assertions; the opt-in paid lane recorded two skips. | Offline Mermaid/SVG/PNG/Excalidraw coverage is green. Skipped paid-provider cases are not live evidence. | +| Isolated local-browser journey plus stop regression | Navigation, snapshot, screenshot, and status passed; stop returned success and left no observed process leak. `browse/test/stop-ack-before-shutdown.test.ts` is **2 pass / 0 fail**. | Provides one real local Chromium journey and a focused regression for acknowledging stop/restart before delayed shutdown. The complete browser suite is included in the later broad pass. | +| `bun test` through the strict singleton runner | **Exit 0: 6,234 pass / 226 expected skips / 0 fail**, 25,392 assertions; 383/383 shard headers and terminal single-file summaries. Log: `/tmp/gstack2-full-singleton-release2.log`. | One uninterrupted macOS broad pass after the browser lifecycle and retry-harness fixes. Expected skips are provider, credential, Poppler-environment, paid, or model-sidecar gates declared by their tests; external/live evidence remains separate. | +| Local `bun run test:windows` through singleton shards | **Exit 0: 2,813 pass / 57 expected skips / 0 fail**, 8,562 assertions; 213/213 shard headers and terminal single-file summaries. Log: `/tmp/gstack2-windows-singleton-release2.log`. | The curated Windows-safe subset is locally green under singleton isolation. This is not native Windows execution; native Windows CI remains blocked. | +| Forbidden production-scope audit | Production dependencies and the 107-component managed bundle contain no cloud-browser provider, Hugging Face/ONNX inference runtime, model weights, or alternative physical-iOS backend. Transformers remains development-only for retained tests; CoreDevice/`devicectl` is the sole physical-iOS path. | Deterministic dependency/bundle/backend evidence. It does not substitute for native-platform, signed-device, or live-provider behavior. | + +### Required final command ledger + +Append exact exit codes, aggregate counts, environment/version metadata, and +artifact/log locations for all of the following before changing status to +`DONE`: + +```text +bun run gen:gstack2 +bun run test:gstack2 +bun run scripts/gstack2/run-parity.ts +bun run scripts/gstack2/semantic-parity.ts +bun run build +bun test +bun run test:windows +bun test design/test +bun test ios-qa/daemon/test +host UI/process launch for six installer-verified hosts +passing live v3 installed-host adversarial run +runtime-absent judgment through an actual host invocation +macOS + Linux + native Windows + Dev Container +local browser live journey + cancellation/leak cleanup +PDF strict + diagram suites +Context.dev verified-key public-page smoke +physical signed-iPhone five-check loop + Release symbol check +upgrade/fail/recover/rollback/uninstall end-to-end +``` + +The focused results above should remain in the ledger even after a later pass; +record the newer SHA/time beside the newer result rather than overwriting the +history. + +## Baseline evidence — 2026-07-16 Scope: detached base worktree `/tmp/gstack2-baseline.e2qk7F`, commit `bb57306d98c97011b0919c6132705a15b1579781`, captured 2026-07-16. These are diff --git a/docs/gstack-2/UPGRADE-AND-ROLLBACK.md b/docs/gstack-2/UPGRADE-AND-ROLLBACK.md new file mode 100644 index 000000000..18f727b9d --- /dev/null +++ b/docs/gstack-2/UPGRADE-AND-ROLLBACK.md @@ -0,0 +1,197 @@ +# GStack 2 upgrade and rollback + +Skill placement and the optional runtime have different lifecycles. Do not +reintroduce host-specific setup by coupling them. Standard skill installation +remains Markdown-only; runtime dependencies are never smuggled into that path. + +## Skill updates + +Install and update the canonical Agent Skills source with the same standard +installer that placed it: + +```bash +npx skills add time-attack/gstack +``` + +Use that installer's update/remove commands and scope. It owns project/global +placement, host destination paths, and selected-skill choices. GStack must not +re-detect hosts during an update or enroll a host/skill the user did not +previously select. + +Before accepting an update, list the source and confirm that the defaults are +still exactly `plan`, `design`, `qa`, `debug`, `review`, and `ship`. Pure +judgment must remain usable even if the optional runtime update fails. + +## 1.x command migration + +The complete old-to-new map is [SKILL-MIGRATION.md](./SKILL-MIGRATION.md). +Opt-in compatibility aliases are retained for two minor releases or 90 days +from the 2.0 release, whichever policy the release notes identify. Each alias: + +1. prints the canonical replacement; +2. routes to the exact preserved specialist module; +3. contains no copied judgment; and +4. stays outside default skill discovery. + +Examples: + +```text +/office-hours -> /plan --mode product +/plan-eng-review -> /plan --mode eng +/design-review -> /design --mode live-review +/qa-only -> /qa --mode report +/investigate -> /debug --mode investigate +/cso -> /review --mode security +/land-and-deploy -> /ship --mode land +``` + +Existing safe preferences may migrate. Context.dev choice and data-egress +consent must never be inferred from legacy browser, telemetry, service, or +update-check settings. Leave Context network mode off until the user explicitly +selects it. + +## Initial managed runtime install + +From a reviewed repository checkout, install only the optional runtime and +local capability bundle with: + +```bash +./setup +``` + +Skill placement remains a separate standard-installer operation. `./setup` +resolves a symlinked source checkout, installs frozen production-only +dependencies, and invokes `runtime/install.js`. The installer copies an explicit allowlist +into an immutable version, rejects internal symlinks and path escapes, records +size/mode/SHA-256 for every file, validates capability targets, smoke-tests the +CLI, then atomically activates it. Stable POSIX and Windows launchers are +written under `$GSTACK_HOME/bin` (default `~/.gstack/bin`), alongside +`runtime-install.json`, which distinguishes managed paths from preserved +config, secrets, projects, and plans. + +Twenty-one focused installer tests pass with 307 assertions. They cover paths +with spaces, a symlinked source root, internal-link rejection, runtime-only +builder selection, production dependency closure, failed build/validation/ +smoke rollback, interrupted recovery, launchers, manifests, wrapper neutrality, +and state-preserving uninstall. + +The current managed-bundle audit records 107 components, 1,830 files, +459,056,031 bytes, and 50 launchers. The Sharp/ngrok closure is included. The +development-only Claude Agent SDK and Hugging Face sidecar are excluded; the +Hugging Face package is development-only. Setup therefore installs neither its +inference runtime nor model weights and reports the L4 capability unavailable. + +A separate clean Linux arm64 container smoke copied the source through a path +with spaces, installed only frozen production dependencies with the development +SDK absent, rebuilt runtime capabilities without Git history or skill +regeneration, passed setup/doctor/version/design/PDF checks, completed a local +browser journey and Sharp full-page screenshot, and uninstalled while +preserving state. Non-Darwin bundles omit the physical-iOS capability. Native +Windows execution remains a separate gate; source-level Windows launchers are +not native evidence. + +## Runtime upgrade transaction + +The candidate runtime intentionally does not combine “download arbitrary code” +with activation. Give it a reviewed staged directory and an explicit version: + +```bash +gstack upgrade --source /path/to/verified-runtime --version 2.0.1 +``` + +The transaction is: + +```text +validate version and source + -> lock upgrade state + -> recover any interrupted pending transaction + -> copy to a unique stage directory + -> write stage metadata + -> run verification when supplied + -> atomically rename stage to immutable version directory + -> write pending pointer with last-known-good + -> run health check + -> atomically mark pointer active +``` + +If copy/verification fails, the stage directory is removed and the active +pointer is unchanged. If health fails, the previous pointer is restored and +the command returns `UPGRADE_ROLLED_BACK`. If the process dies after writing a +pending pointer, the next upgrade/cleanup/doctor path recovers the last known +good version before selection. + +The runtime uses one per-user version store, not one copy per AI host. Skill +install failure and runtime install failure are independent; neither may erase +the other. + +## Manual rollback + +Inspect health first: + +```bash +gstack doctor +gstack doctor --json +``` + +Roll back to the retained last-known-good version: + +```bash +gstack upgrade --rollback +``` + +Rollback validates that the retained directory exists, optionally health-checks +it in the library call, atomically switches the pointer, and retains the version +rolled back from as the next fallback. If no fallback exists it fails with an +actionable error rather than choosing an arbitrary directory. + +Runtime state schemas migrate forward only. If a state or migration marker is +newer than the running runtime, stop with `STATE_NEWER_THAN_RUNTIME` or +`MIGRATION_NEWER_THAN_RUNTIME`; never downgrade or rewrite the newer data. + +## Recovery after interruption + +1. Do not delete `~/.gstack/versions/current.json` while diagnosing. +2. Run `gstack doctor --json` and preserve the output with secrets removed. +3. Run `gstack cleanup --dry-run` to preview only stale managed temporaries. +4. Retry the upgrade command. It recovers a pending pointer before staging. +5. If the candidate remains unhealthy, use `gstack upgrade --rollback`. +6. Inspect the current worktree's run state with `gstack state inspect`. +7. Resume only the named/current-worktree run. An external effect left + `uncertain` must be reconciled; do not clear the marker and repeat it blindly. + +Cleanup skips symlinks and user-named data, and removes only recognized stale +runtime temporaries/locks. `--dry-run` is non-mutating. + +## Uninstall + +Use the standard installer to remove skills. Separately, remove managed runtime +versions while preserving configuration, secrets, and project history: + +```bash +gstack uninstall +``` + +Purge all runtime state only after reviewing the path and accepting data loss: + +```bash +gstack uninstall --purge --yes +``` + +The runtime refuses unsafe roots such as the filesystem root or home directory. +It does not remove host skills, browser profiles, unrelated apps, repositories, +or iPhone data. + +## Evidence state + +Focused candidate tests cover the managed installer plus atomic activation, +failed-health rollback, interrupted-pointer recovery, manual rollback, +newer-schema refusal, and non-mutating cleanup preview. The standard installer +matrix separately passed 470/470 checks across six hosts, 16 installs, scopes, +selections, and two removals; its artifact is +[`evals/installation/install-matrix.json`](../../evals/installation/install-matrix.json). +The runtime installer is green at 21 pass / 0 fail and 307 assertions, and the +current 107-component bundle audit is recorded. The clean Linux Dev Container +install/uninstall smoke passed. Interrupted network acquisition/stage at OS +level, a passing live v3 host run, actual host UI execution, native-host Linux, +and native Windows runs remain gates. See +[TEST-EVIDENCE.md](./TEST-EVIDENCE.md).