openreachtech/hora-core/hora-fast
Claude Code and agent skill by openreachtech/hora-core
- community
Checking that the SKILL.md file is still in the repository.
Build a version's features several at a time, each in its own git worktree, after the parts they share have been built once. Uses the same spec, plan, feature files and acceptance as /hora, and replaces only the scheduling. Invoked instead of /hora, by an explicit /hora-fast, when one feature at a time is too slow for the version.
Install
npx vskill@latest install openreachtech/hora-core/hora-fastSKILL.md
hora-fast
The parallel scheduler. Same spec, same plan, same feature files, same acceptance as /hora. What changes is when a feature's checkpoints run: several features at once, each in its own worktree, after the parts they share have been built once and fixed.
The design in one sentence: each feature is verified statically as it lands; the version is verified live, once, at the end. A feature's checkpoint 18 is the browser-less gate run /hora-accept already defines. The browser-driven review runs once, over the whole version, at the sweep.
Read ../hora/references/structure.md first, then ../hora-build/references/checkpoints.md. Both apply here unchanged, and so does every git rule in ../hora/references/commits.md.
What is shared with /hora, and what is replaced
| shared, unchanged | /hora-spec, /hora-setup, /hora-plan, /hora-accept, /hora-hotfix; the three invariants; every branch and commit rule; the eighteen checkpoints and their exit conditions; the feature file, its run record and the acceptance records; what "done" means | |
| replaced | /hora's "one feature to acceptance before the next starts", and /hora-build's "never alongside another feature" | |
| added | the foundation, the worktrees, the parallel loop, the merge step, the drain, and one record file |
The feature file is the contract between the two schedulers. Every checkbox this skill writes into .hora/tasks/<version>/<feature-id>.md is one /hora-build would have written, with the same marks, the same run record and the same checkpoint 18. Either scheduler can continue a version the other started: each reads the first [ ] and goes on from there ("Switching between the two schedulers", below).
This skill edits no hora file and restates none. Where a rule below reads like one in /hora-build, it is a pointer.
What to say before starting
Run the equipment check /hora runs (../hora/SKILL.md, "Whether hora can start at all"). Then estimate what /hora would take from here, and say it:
Ask whether there is a date. Do not assume one. Most versions have none, and wanting the version sooner is reason enough to be here. Where a date exists and the serial estimate fits it, say so; the person chooses which scheduler runs.
Read the four conversation lines apart. wall-time: on checkpoints 1, 2, 9 and 11 is mostly a person answering, and it is the same under either scheduler. A version whose time sits mostly on those four lines gains little here. Say so when the records show it.
A person chooses this skill by invoking it, and the invocation is the whole decision (../hora/references/structure.md, "Where a lever lives", question 2). The record says who chose it ("The record", below).
Deciding where you are
/hora's steps, with 4a and 5 inserted. Do this every time.
Report the decision in one line before starting — "continuing 1.0.0 in parallel. Foundation fixed, 4 of 11 features done, 3 in flight, opening #payroll".
The foundation
Every file two features would both write is built once, before any feature starts. This is /hora-build's exclusivity rule one level up: there, a file two units would both write goes to one of them; here, a file two features would both write goes to the foundation.
It is derived against `release/<version>`'s tip. What the remaining features share and the tip already holds — a table an earlier feature built, a Base member already merged — is done, not foundation work. On a version /hora started, most of it is.
What is in it
| Found where | ||
|---|---|---|
| the contracts, per server | already derived and pinned by /hora-plan, step 3. They are the foundation's core | |
| a table more than one remaining feature reads or writes | the spec's data model, read against each feature section. The data model is already a task of its own (spec: <version>#data-model) | |
| the types generated from the contracts | whatever the equipped skills covering API schemas generate | |
a conflict-proof file's planned change — an environment key, a compose profile, a Base member | /hora-build, "Conflict-proof files are reported, not written directly". A feature in flight cannot wait for one, so they go in first | |
| a dependency the plan can already see | the spec's key file map and the stack handbook. One that surfaces during implementation is handled in flight (below) | |
| shared seed data — master rows every feature reads | the manual verification section and the use cases | |
every file /hora-plan marked Conflict: in more than one feature file | ../hora-plan/SKILL.md, "Mark what overlaps" | |
| every module a dependency writes and a dependent imports | the Imports: marks, from the same section |
An aggregation file is derived, so it is regenerated at every merge rather than built here.
How it is built
The mechanical contract check
Parallel transcription fails by silent divergence: the declared surface, the generated types and the stubs each correct alone and different from each other. Prose misses it.
| Delegate to | the skills covering the API schema and the types generated from it | |
| What this skill adds | the check is a command, and its output is read whole. It runs here and again at every merge | |
| Exit condition | the foundation's files are on release/<version>'s tip in every repository, the contract check passes, the shared seed loads, and every repository's suite passes on that tip |
Worktrees
One worktree per feature, per repository it touches, on the `feature/<feature-id>` branch `commits.md` names. The branch rules stay as they are; the branch gets a directory of its own.
`.worktrees/` is ignored by the hora repository, like the nested rows. Add the line to its .gitignore when it is missing.
A worktree is the repository, for every rule that says "from inside the repository". cd, git -C, lint, tests, the change-set derivation — all run in the worktree (../hora/references/structure.md, "Where a per-repository command runs"). Running one of them in the main working copy for a feature in flight is that file's wrong-directory failure, one level up.
What a second working copy needs — dependencies, a database, ports — is the stack handbook's answer, read at run time like every other stack fact. A missing answer is a lacked-environment question, never a guess.
A feature that names several frontend rows opens one worktree per row, each on entering that row's 10, and each gate follows the previous row's 17 under the order rule (../hora-build/references/checkpoints.md, "A feature that names several frontend rows carries one frontend gate per row").
How many features are open at once is a limit a person sets; the default is three. It bounds machine load and the main session's attention. Correctness does not depend on it.
A session that ends mid-feature loses nothing. Step 0 finds every open worktree from git, and the next run re-enters the feature at its first [ ], in the worktree it already has.
Moving a mid-gate feature into a worktree
/hora keeps the feature it is building in the main working copy, on its feature/ branch, and mid-gate that copy may hold uncommitted work: implementation commits follow the package's convention, and .hora/ commits at the gate's end. A branch checked out in the main copy cannot be checked out in a worktree as well, so the feature moves, and its uncommitted work moves with it:
The stash creates no commit, so the package's commit granularity is untouched. The work lands in a fresh checkout of the same branch, so the pop has nothing to conflict with. Ignored files stay behind; the worktree gets its own, as the handbook says.
Stop only when a step fails, and say which.
The parallel loop
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-fast/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-fast)