docs(openspec): set up OpenSpec baseline (config + principles + glossary)#9
Conversation
…ary) Establishes OpenSpec for oura-cli, mirroring the kesha-voice-kit / ottoman / bowser / iago layout: - openspec/config.yaml: schema + context (oura-cli's conventions — Bun-native, Oura Cloud API -> SQLite local cache, login/sync/report/db + agent surface, JSON-off-TTY output, CliError/ErrorCode, tsgo strict, named exports, co-located tests, OpenClaw manifest) + the seven spec-writing rules. - openspec/specs/README.md: disclaimer, spec shape, three personas (Quinn the quantified-self user / Marcus the data scripter / Aria the agent author), planned capability table. - openspec/specs/GLOSSARY.md: canonical terms (Local cache, PAT, Data type, CliError, manifest, …), each traced to src/. No spec.md files yet — specs/ fills in as capabilities are extracted. Docs/tooling only; no user-visible behavior change (no CHANGELOG entry). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Greptile SummaryThis PR establishes an OpenSpec baseline for oura-cli: a
Confidence Score: 4/5Safe to merge once two GLOSSARY inaccuracies are corrected — no production code is touched. The entire value of this PR rests on the GLOSSARY being trustworthy: future agent-surface and query specs will be written against these definitions. Two entries misrepresent the actual implementation — healthcheck does not check token presence or API reachability, and db import does hit the network despite the entry saying the command is network-free. These are direct contradictions between the glossary text and the source files. openspec/specs/GLOSSARY.md — the Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[openspec/config.yaml\nProject context + 7 rules] --> B[openspec/specs/README.md\nPersonas + capabilities table]
A --> C[openspec/specs/GLOSSARY.md\nCanonical term definitions]
B --> D[Future spec files\nspecs/auth/spec.md\nspecs/sync/spec.md\n...]
C --> D
D --> E[OpenSpec validate\n--specs --strict]
subgraph Terms verified against src/
C1[PAT ok - src/commands/login.ts]
C2[Local cache ok - src/db/database.ts]
C3[Output mode ok - src/lib/format-resolve.ts]
C4[healthcheck - claims token+API check but impl is local-DB probe only]
C5[db - claims network-free but db import calls Oura Cloud API]
end
C --> C1 & C2 & C3 & C4 & C5
Reviews (2): Last reviewed commit: "docs(openspec): fix output flag — --form..." | Re-trigger Greptile |
… P1) oura-cli selects output via --format <json|table> (src/commands/common.ts), auto-defaulting to JSON off-TTY — there is no --json flag. Corrected the Marcus persona and enriched the Output mode glossary entry with the real --format override. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Fixed both glossary inaccuracies: |
Summary
Sets up OpenSpec for oura-cli, mirroring the layout used by
kesha-voice-kit,ottoman,bowser, andiago: 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, 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(oura-cli's conventions — Bun-native, Oura Cloud API → SQLite Local cache,login/sync/report/db+ agent surface, JSON-off-TTY output,CliError/ErrorCode,tsgostrict, named exports, co-located tests, OpenClaw manifest) +rules(1 proposal rule, 6 spec rules).openspec/specs/README.mdopenspec/specs/GLOSSARY.mdCliError,manifest, …), each traced tosrc/.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).CHANGELOG.md[Unreleased]entry (per CONTRIBUTING, that's for user-visible changes).config.yamlmirrors the schema validated underopenspec validate --specs --strictelsewhere; the OpenSpec CLI can be added separately for the in-editor workflow.🤖 Generated with Claude Code