Summary
Ship the SDD methodology as portable local agent skills (Claude Code, Cursor, OpenCode, Hermes) that author an SDD-grade plan on the developer's machine and hand off to the cloud pipeline via the existing plan:provided marker. Convergence at the spec/skill layer; cloud execution and governance unchanged.
Motivation
- No inner-loop / local / offline story today; the GitHub-primitives-only ceiling means no local dry-run or authoring.
- Cloud engine is Claude-centric. Local skills add multi-agent breadth at the authoring layer without abstracting the cloud engine, so the model-tier execution moat is preserved.
- Both gaps close cheaply because the two hard parts already exist:
- Methodology core is already factored into
shared/*.md fragments consumed via gh-aw imports:.
- Handoff is already implemented:
plan:provided → sdd-triage architecture-translation mode.
Scope (approved)
Authoring front-end → cloud. Shared core + thin per-harness adapters. Local execute/review is out of scope.
Design
shared/sdd-authoring.md — local authoring flow + the plan:provided output contract (plan body → R-IDs / demoable units → issue+label). Composes the agent-portable fragments: principles, rigor, sdd-gates, sdd-interaction, sdd-proof-artifacts, repo-conventions. Excludes runtime/MCP/gh-aw fragments (runtime-setup, sdd-mcp-*, *-cleanup).
- Composition build step (analog of
inlined-imports / recompile-locks) so cloud workflows and local skills stay in sync from one source; guarded by a drift snapshot test.
- Thin per-harness adapters, all referencing the same body: Claude Code skill (
SKILL.md), Cursor .cursor/rules/*.mdc, OpenCode agent config, Hermes (format TBD).
- Installer: extend
scripts/quick-setup.sh --suite or add scripts/install-local-skill.sh — same thin-wrapper install model as the cloud suite (ADR-0004).
- Handoff contract doc cross-checked against
sdd-triage.md architecture-translation-mode expectations so triage parses the emitted plan reliably.
- Docs
docs/sdd/local-authoring.md (+ mkdocs nav) and ADR decisions/0020-local-authoring-skills.md.
Acceptance
Reuse anchors (do not rebuild)
shared/*.md methodology fragments; .github/workflows/sdd-spec.md imports: composition pattern; sdd-triage.md plan:provided translation mode; scripts/quick-setup.sh thin-install; scripts/test-*.py test harness pattern; decisions/ ADR convention.
Out of scope (logged)
Full local execute/review loop; transcript/forensic provenance; post-merge circuit-breaker; release tags / E2E (#87/#89/#91) / second maintainer; cost circuit-breaker; methodology depth-vs-friction default. The authoring-body composition does seed a cheap future local replay harness for #91.
Open question
Hermes target/format.
Context
Emerged from a shootout vs glasner/aiki (inner-loop local Rust CLI). aiki's distinguishing strengths are a local/offline loop and agent-agnosticism; this captures the authoring-layer subset that maps cleanly onto spectacles without adopting Jujutsu or a local runtime. Note for prioritization: a prior claim that aiki "owns an auto-fix loop spectacles lacks" was disproved — sdd-route-execute already runs two bounded auto-revise loops (cap 3), so auto-fix is not a gap.
Summary
Ship the SDD methodology as portable local agent skills (Claude Code, Cursor, OpenCode, Hermes) that author an SDD-grade plan on the developer's machine and hand off to the cloud pipeline via the existing
plan:providedmarker. Convergence at the spec/skill layer; cloud execution and governance unchanged.Motivation
shared/*.mdfragments consumed via gh-awimports:.plan:provided→sdd-triagearchitecture-translation mode.Scope (approved)
Authoring front-end → cloud. Shared core + thin per-harness adapters. Local execute/review is out of scope.
Design
shared/sdd-authoring.md— local authoring flow + theplan:providedoutput contract (plan body → R-IDs / demoable units → issue+label). Composes the agent-portable fragments:principles,rigor,sdd-gates,sdd-interaction,sdd-proof-artifacts,repo-conventions. Excludes runtime/MCP/gh-aw fragments (runtime-setup,sdd-mcp-*,*-cleanup).inlined-imports/recompile-locks) so cloud workflows and local skills stay in sync from one source; guarded by a drift snapshot test.SKILL.md), Cursor.cursor/rules/*.mdc, OpenCode agent config, Hermes (format TBD).scripts/quick-setup.sh --suiteor addscripts/install-local-skill.sh— same thin-wrapper install model as the cloud suite (ADR-0004).sdd-triage.mdarchitecture-translation-mode expectations so triage parses the emitted plan reliably.docs/sdd/local-authoring.md(+ mkdocs nav) and ADRdecisions/0020-local-authoring-skills.md.Acceptance
plan:providedcontract (test:scripts/test-local-authoring.py, mirroringscripts/test-requirement-ids.py).scripts/test-digest-snapshot.py).plan:providedissue →sdd-triageenters translation mode → task graph produced.markdownlint+mkdocs buildclean;recompile-locksstays green (no cloud workflow behavior changed — only new shared fragment, docs, skill assets).Reuse anchors (do not rebuild)
shared/*.mdmethodology fragments;.github/workflows/sdd-spec.mdimports:composition pattern;sdd-triage.mdplan:providedtranslation mode;scripts/quick-setup.shthin-install;scripts/test-*.pytest harness pattern;decisions/ADR convention.Out of scope (logged)
Full local execute/review loop; transcript/forensic provenance; post-merge circuit-breaker; release tags / E2E (#87/#89/#91) / second maintainer; cost circuit-breaker; methodology depth-vs-friction default. The authoring-body composition does seed a cheap future local replay harness for #91.
Open question
Hermes target/format.
Context
Emerged from a shootout vs
glasner/aiki(inner-loop local Rust CLI). aiki's distinguishing strengths are a local/offline loop and agent-agnosticism; this captures the authoring-layer subset that maps cleanly onto spectacles without adopting Jujutsu or a local runtime. Note for prioritization: a prior claim that aiki "owns an auto-fix loop spectacles lacks" was disproved —sdd-route-executealready runs two bounded auto-revise loops (cap 3), so auto-fix is not a gap.