docs(openspec): set up OpenSpec baseline (config + principles + glossary) - #20
Conversation
…ary) Establishes OpenSpec for Iago, mirroring the kesha-voice-kit / ottoman / bowser layout: - openspec/config.yaml: schema + context (Iago's conventions — skill-first, host-agent LLM draws the diagram, bun+gh-only runtime, no Action, dependency-free skill folder, Mermaid reserved-keyword safety, gh -f raw-field, version alignment) + the seven spec-writing rules. - openspec/specs/README.md: disclaimer, spec shape, three personas (Pasha the review author / Devin the toolchain integrator / Mira the skill maintainer), planned capability table. - openspec/specs/GLOSSARY.md: canonical terms (Skill, Host agent, Diagram type, /review comment, post.ts, …), each traced to the repo. No spec.md files yet — specs/ fills in as capabilities are extracted. Iago's runtime is bun + gh; npx also works, so no bun-only rule is imposed. Staged explicitly per CLAUDE.md (never git add -A). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Greptile SummaryThis PR establishes the OpenSpec baseline for Iago — a
Confidence Score: 5/5Documentation-only change with no runtime code; all file and line references were verified against the current codebase. All three new files are pure documentation. Every file:line citation in the glossary (post.ts:50-51, sanitize.ts, diagram-selection.md, mermaid-templates.md) points to files that exist and contain exactly what is described. Terminology is internally consistent across config.yaml, GLOSSARY.md, and README.md. The previously flagged 'on top of' wording has been corrected to 'appending … to the end of'. No executable code is introduced. No files require special attention. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[OpenSpec baseline] --> B[openspec/config.yaml]
A --> C[openspec/specs/README.md]
A --> D[openspec/specs/GLOSSARY.md]
B --> B1[schema: spec-driven]
B --> B2[context: project constraints\nbun+gh, no Action, -f flag,\ndependency-free scripts]
B --> B3[rules: proposal + 6 spec rules\nNon-goals / personas / traceability\nhappy+error scenarios / Open Issues]
C --> C1[Spec shape\nPurpose / Non-Goals / Requirements\nTechnical Notes / Open Issues]
C --> C2[Personas\nPasha / Devin / Mira]
C --> C3[Capabilities table\ndiagram-append / diagram-selection\nmermaid-authoring / installer-cli / distribution]
D --> D1[18 canonical terms\nSkill / Host agent / Diagram type\npost.ts / sanitize.ts / Runtime]
D1 -- file:line refs --> E[iago/scripts/post.ts:50-51\niago/scripts/sanitize.ts\niago/references/*.md]
B3 -. governs future .-> F[specs/name/spec.md\neach capability]
C3 -. links once written .-> F
Reviews (2): Last reviewed commit: "docs(openspec): clarify Append definitio..." | Re-trigger Greptile |
'on top of' read as prepend; post.ts:50-51 appends to the end of the comment body. Reworded to 'appending ... to the end' and cited the file. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Summary
Sets up OpenSpec for Iago, mirroring the layout used by
kesha-voice-kit,ottoman, andbowser: aconfig.yamlcarrying project context + spec-writing rules, plus aspecs/README and glossary. Future work can then be proposed as OpenSpec change deltas against a consistent baseline.The spec-writing rules are the Pareto core of Joel Spolsky's painless-functional-spec structure (Non-Goals first-class, outcomes not implementation in requirement text, Open Issues first-class) crossed with Nikita Sobolev's user-story lenses (named personas, glossary terms verbatim, every requirement verifiable with a happy and an error scenario), plus
file:linetraceability.What's added
openspec/config.yamlschema+context(Iago's conventions — skill-first, host-agent LLM draws the diagram, bun + gh only, no Action, dependency-free skill folder, Mermaid reserved-keyword safety,gh -fraw-field, version alignment) +rules(1 proposal rule, 6 spec rules).openspec/specs/README.mdopenspec/specs/GLOSSARY.md/reviewcomment,post.ts, …), each traced to the repo.The seven rules (
config.yamlrules)file:linerefs in a Technical NoteNotes
spec.mdfiles yet —specs/fills in as capabilities are extracted (the README table links them in then).git add -A).config.yamlmirrors the schema validated underopenspec validate --specs --strictelsewhere; the OpenSpec CLI tooling can be added separately if you want the in-editor workflow.🤖 Generated with Claude Code