openreachtech/hora-core/hora-spec-usecases
Claude Code and agent skill by openreachtech/hora-core
- community
Checking that the SKILL.md file is still in the repository.
Stage 1 of /hora-spec. Fix who uses the product and what each of them completes end to end, and — where something already runs — how far each feature is built and whether it is specified or only listed. Writes the document information, the actors, the terminology, the existing assets, and every feature's two blocks. Invoked by /hora-spec, or directly.
Install
npx vskill@latest install openreachtech/hora-core/hora-spec-usecasesSKILL.md
hora-spec-usecases
Stage 1 of `/hora-spec`. Nothing else in a spec can be decided until this is: a table has nothing to hold, an operation has nobody calling it, and a screen has no reason to exist.
Read ../hora/references/structure.md and ../hora-spec/references/principles.md first. `../hora-spec/references/stages.md` is the authority on this stage's exit condition, and ../hora/references/spec-format.md on the format of everything written here.
What this stage decides
What it must not decide
| Whose it is | ||
|---|---|---|
| which table holds any of it | stage 4 | |
| which operation serves a use case | stage 4 | |
| which screen a use case passes through | stage 5 | |
| whether a use case is in this release or the next | stage 2 — this stage collects them all, including the ones that will be deferred | |
| where a behavior that spans several features is checked | stage 2, which holds the order. This stage hands it over rather than placing it | |
| what a role may and may not do, operation by operation | stage 6 | |
| a class name, a table name, an identifier | `/hora-plan`. A term and its description are all that belongs here |
Collect more than this release will build. A use case that stage 2 defers is what stage 2 weighs, and it is where stage 3's foreseen numbers come from.
The conversation
Where stage 0 found something running, start from what it read, not from a blank page. Put the implied feature list and actor candidates up as checks, batched per area. A conversation about a list somebody is amending is far shorter than one about a list they must produce (../hora-spec/references/investigation.md).
What no surface implies is question 1, 3, 5 and 6. Why it exists, what somebody is trying to accomplish, what they do without it, and what must never happen are not in any tree.
Ask in this order. Each answer narrows the next question.
Question 3 is the stage. Everything else supports it.
| Push for | Away from | |
|---|---|---|
| who is doing it | "the system does X" | |
| what they are trying to achieve | "there is a button for X" | |
| where it starts and where it is done | a step in the middle, with no beginning | |
| enough that somebody with no access to the code could follow it | selectors, endpoints, table names |
Question 4 is not small talk. Frequency decides what a screen puts first at stage 5, and the once-a-month operation that touches everything is usually the heaviest one stage 3 is about to ask for.
Question 5 has four parts wherever code exists, and two on a new project. What exists; whether it may be read (which one it is may never be inferred — ../hora/references/structure.md, invariant 2); which side is authoritative when the code and the spec disagree; and how much of what already runs this version's tag claims (../hora/references/spec-format.md, "Existing assets"). One question each, two options each, and Authority is overridable per feature (<!-- authority: -->).
The last two are both asked before question 8, never after, because each decides how question 8 is asked at all. Authority decides its shape — a derived table to confirm, or an open question per feature. Baseline decides whether the listing question is asked at all, and what a built: answer then does: acted on, or merely recorded.
`verified` is required wherever code exists, and it is what adoption has always done. Writing the line down turns it from an unstated default into a choice somebody made; inventoried is that choice going the other way.
Both lines are approved in prose, on their own, and neither is ever folded into an option (../hora/references/asking.md). `Baseline` carries one rule beyond that: it goes into spec.md itself, since a declaration that leaves features unaccepted is legitimate only while every later reader sees it (../hora/references/spec-format.md, "Required sections").
Question 6 becomes one of three things: an acceptance criterion in the owning feature's block, a permission at stage 6, or — where the answer is about the product rather than one feature — a criterion handed to stage 2. Write the answer down where it is given; do not decide yet which it becomes.
Question 7's answer becomes the prefix of every repository name. Confirm the spelling — changing it renames every repository.
The listing question — asked before question 8, and never inside it
Asked only where `Baseline: inventoried` was declared. Under verified there is nothing to ask. Where the permission exists, each feature gets one of two answers — specified this version, or listed: not specified, and not accepted (../hora/references/spec-format.md, "baseline").
It is never an option inside question 8, and that is a rule about form. Under as-built, question 8's options are checks on a value derived from the tree. "This feature will not be verified" is a decision, not a reading — put beside three derived gates it becomes a proposal wearing a check's clothing, and nothing afterwards distinguishes the two (../hora/references/asking.md, "What is never asked").
Lay out the evidence, batch at most four features per exchange, and recommend nothing. Authority: as-built lifts nothing here.
One yes over a table of seventeen features is not an answer, and it is forbidden by name (../hora/references/structure.md, invariant 1). Four per exchange, each one selected.
Question 8 still runs for a listed feature, and its answer lands differently.
| A feature answered | What question 8 then does with it | |
|---|---|---|
| specified | writes built: at the confirmed gate, and the mapping applies — the checkpoints that gate covers go not applicable, 18 stays open | |
| listed | still asks, and built: is still required — but the value is recorded, not acted on. Nothing is marked, and the version that pays the debt restates it and has it confirmed |
Record every listing decision in `.hora/spec/<version>/_stages.md`, with the name of whoever made it. The annotation says a feature is unaccepted; nothing in specs/ says who chose that, or against what evidence — and paying the debt later begins by asking exactly that.
Question 8 — built:, and how the Authority answer changes its shape
`built:` records how far a feature was implemented before Hora Kit was adopted, and it is what lets an existing product be accepted rather than rebuilt (../hora/references/spec-format.md).
Skip question 8 entirely where stage 0 found nothing running.
Question 5's `Authority` answer decides which of the two shapes below this takes. A to-spec feature is skipped in both: it never carries built:, and its checkpoints all run. What it gets instead is not silence — its use cases are settled in conversation and its divergences routed, put to the person per feature with prepared options, but with more of the answer left to them.
Under as-built: present the derived table whole, then confirm feature by feature
The declaration already answered the direction; what remains is each feature's gate, and the exceptions.
Then confirm feature by feature, by selection, with the derived gate as the default. Four features per exchange; every feature's options are the derived gate first, the other gates, and not finished (to-spec). The person mostly selects — composing is never asked for.
A feature answered not finished becomes <!-- authority: to-spec --> — no built:, all checkpoints open. The derivation is allowed by the declaration and by nothing else (../hora/references/asking.md, "What is never asked"), and every derived value is still confirmed before it is written.
Over-declaring is the recoverable direction (below), which is why drafted defaults are safe here.
Where no declaration exists: asked, never concluded
No amount of reading settles it. A half-built screen and a finished one look identical from a file listing. Offer the evidence and leave the choice open — do not recommend an option.
This and the listing question are the only two things in this stage asked per feature rather than per area. Each is a different answer per feature, and getting one wrong changes which seventeen gates run — or whether any of them runs at all.
Use the question tool, four features per exchange, with not built always present as an option.
Which way an error goes
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingkit/skills/hora-spec-usecases/SKILL.md
Popularity
- Repository stars
- 56
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/openreachtech/hora-core/hora-spec-usecases)