Package the reusable prompt collection under prompts/
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s

HF-WP-0005. The prompts used to drive work across HelixForge repositories
existed only as text pasted between sessions. They are now Canned Prompt Format
v0.2 packages with declared inputs, parameters and output contracts.

Seven packages: repo-orient (merging "what is this repo about" with "what
should we do now" as a `depth` parameter), repo-register, repo-advance,
commit-sync, scope-audit, gap-workplan, session-close.

"Go on implement, please" is deliberately not packaged. It is conversational
continuation with no contract to declare, and packaging it would produce an
artifact whose only content is the word "continue".

Every one of these prompts assumed the operator's setup — the State Hub is a
read model, workplans originate as files and are never registered by hand, a
session closes with a progress event. That assumption is what made them
personal rather than reusable. helix/custodian-conventions states those rules
once as a fragment composed by every package, so they are versioned,
improvable in one place, and present for an agent that has never seen this
fleet.

helix/commit-sync-routine exists for a narrower reason. repo-advance first
composed the whole commit-sync package, which itself composes the conventions,
so the rendered prompt carried the conventions block twice — CPF inclusion does
not deduplicate, and a diamond dependency renders shared content once per path.
Factoring the routine out removes the diamond and is a better factoring
regardless. Recorded upstream as canned-prompts CANP-WP-0004-T03.

helix/session-close composes practice/pqrst-estimate, so the canonical PQRST
block is embedded verbatim. hall-of-helix CLOSING.md says the canonical prompt
still governs when you have no pqrst-practice checkout, without saying how it
reaches you; this is how. evals/pqrst-embedded.yaml fails if the canonical text
stops being embedded verbatim, rather than letting the package quietly become a
paraphrase.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bjefh8NUiEiahN4JLwoSKM

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 388925@bnt-lap001
Assistant-Session: 3507023f-e0fd-4a1e-9d90-a0d4217d1502
This commit is contained in:
tegwick 2026-09-06 17:15:13 +02:00
parent 79e9cd9022
commit 883409665f
22 changed files with 967 additions and 0 deletions

View file

@ -0,0 +1,105 @@
---
id: HF-WP-0005
type: workplan
title: "Reusable prompt collection under prompts/"
domain: infotech
repo: helix-forge
status: finished
owner: codex
topic_slug: helix-forge
created: "2026-09-06"
updated: "2026-09-06"
---
# Reusable prompt collection under `prompts/`
The operator's working prompts for driving work across HelixForge repositories
existed only as text pasted between sessions. This workplan packages them in
Canned Prompt Format v0.2 so they carry explicit contracts, compose shared
context, and can be versioned and evaluated.
Companion work in `canned-prompts`: `CANP-WP-0004` (the catalog index that
records where each package came from and when).
## Package the collection
```task
id: HF-WP-0005-T01
status: done
priority: high
```
Seven packages plus two fragments under `prompts/`:
| Package | From |
|---|---|
| `helix/repo-orient` | "What is this repo about? What workplans and tasks are pending? How and what will we benefit… and how much effort" — merged with "what should we do now" as a `depth` parameter |
| `helix/repo-register` | "Review and Register this repo. Refine open Questions by conducting an interview if necessary" |
| `helix/repo-advance` | "Check for changes and open work, review and implement it, then commit and sync" |
| `helix/commit-sync` | "Review, commit and sync local changes" |
| `helix/scope-audit` | "Update SCOPE.md to what the repo actually is capable of… file under history/ with a timestamp prefix" |
| `helix/gap-workplan` | "What are the most relevant gaps? Build a workplan addressing them. Register and implement it" |
| `helix/session-close` | "Close down this session… put an entry to hall-of-helix following its CLOSING.md" |
**Dropped deliberately.** "Go on implement, please" is conversational
continuation with no contract to declare — packaging it would produce an empty
artifact whose only content is the word "continue".
## Extract the implicit context into a fragment
```task
id: HF-WP-0005-T02
status: done
priority: high
```
Every one of these prompts assumed the operator's setup: that the State Hub is
a read model, that workplans originate as files and are never registered by
hand, that a session closes with a progress event. That assumption is exactly
what made them personal rather than reusable — `INTENT.md` calls hidden context
the enemy of reuse.
`helix/custodian-conventions` (`type: fragment`) states those rules once and is
composed by every package, so they are versioned and improvable in one place
and present for an agent that has never seen this fleet.
## Remove the diamond dependency
```task
id: HF-WP-0005-T03
status: done
priority: medium
```
`helix/repo-advance` first composed the whole `helix/commit-sync` package, which
itself composes the conventions. The rendered prompt contained the conventions
block **twice** — CPF inclusion does not deduplicate, so a diamond dependency
renders shared content once per path.
Fixed by factoring: `helix/commit-sync-routine` holds the routine with no
conventions of its own, and both `commit-sync` and `repo-advance` compose it
alongside the conventions. No diamond, and a better factoring independently of
the bug.
Recorded upstream as a format finding — see `CANP-WP-0004-T03`.
## Make session-close carry the canonical PQRST prompt
```task
id: HF-WP-0005-T04
status: done
priority: high
```
`hall-of-helix/CLOSING.md` step 2 says to paste `~/pqrst-practice/PqrstPrompt.md`
unmodified, and notes that the canonical prompt still governs when you have no
checkout — without saying how it reaches you.
`helix/session-close` composes `practice/pqrst-estimate`, so the canonical block
is embedded verbatim in the rendered closing prompt. Closing a session no longer
needs a `pqrst-practice` checkout. `evals/pqrst-embedded.yaml` guards it: if the
canonical text stops being embedded verbatim, render checks fail rather than the
package quietly becoming a paraphrase.
This depended on fixing `practice/pqrst-estimate` upstream, which was itself a
paraphrase of the canonical prompt — see `CANP-WP-0004-T01`.