Replaces the single 8k always-injected global prompt with cadence-tiered injection: - Tier 0 (.aipass/tier0_kernel.md, ~2k) injects EVERY turn — identity grounding, the drone --help reflex, disaster-preventer rules. Folds DPLAN-0213 C1 (faithful-reporting) + C2 (no-gold-plating sub-agent brief). - Tier 1 (.aipass/tier1_navmap.md, ~7.7k) injects every 5th turn + session-start + post-compaction — full agent roster, framework, conventions, plus a new Terminology section migrated from the S211 backup. - Old global_prompt loader retired (disabled in hooks.json, removed from cadence wiring); aipass_global_prompt.md kept as a reference snapshot. Engine (built by @hooks): per-loader period in cadence.py should_fire() (back-compatible: unset period falls back to global); new tier0_kernel + navmap handlers; bypass.json extended to cover the two new dynamically-dispatched handlers. 614/614 tests pass, seedgo @hooks 100%. Live-verified: tier0 fires every turn, navmap on turn 0/5/10, turn counter advances once per turn (not per loader), no double-injection. Machine-local wiring (cadence_config.json, ~/.claude/settings.json bridge) updated on this host; fresh-clone seeding of those is a tracked follow-up. PROMPT_STYLE.md reference updated to point at the tier files as canonical examples.
3.5 KiB
3.5 KiB
AIPass Prompt Style
Reference format for .aipass/aipass_global_prompt.md and branch-level .aipass/aipass_local_prompt.md files.
Goal: signal density over prose. Prompts are injected every turn — every line costs tokens. Terse reference beats conversational coaching.
Format rules
- Single
#headers only. No##or###. If a section needs subdivision, split it into a new#section. - Bullets use
-(leading space, dash, space). Consistent across nested and top-level — no double-space indent for nesting. - No bold, italic, or underline emphasis in body text. Use clear phrasing instead. All caps reads as shouting and AI agents deprioritize it — avoid.
- No
---horizontal dividers. Section headers already delimit content. - Section intros are 1–2 lines max. If you need a paragraph, the section is too broad — split it.
- Voice: terse imperative, reference-style. Like API docs or CLI help, not a tutorial.
- Code blocks: inline backticks for commands (
`drone @ai_mail dispatch`). Multi-line fenced blocks only for directory trees, template skeletons, or command examples that don't fit inline. - File length: aim for under 230 lines. Global and branch prompts are injected every turn — every line costs tokens.
Writing voice (agent output + memory)
How agents write responses, reports, and memory entries. Validated against Claude Code's own prompt (DPLAN-0213).
- Reference code as
file_path:line_number— clickable, unambiguous. - No colon before a tool call. "Let me read the file." then call it, not "Let me read the file:".
- No emojis in agent output unless the user uses them first.
- Write for a reader who stepped away and lost the thread: no codenames or shorthand they would have to decode. Clarity over terseness — the goal is the reader understanding with no mental overhead.
- Where detail lives, three tiers: a short capability phrase (registry/search), a one-line summary (
drone @agent), the full reference (drone @agent --help). Keep the injected prompt terse; push depth into --help.
What NOT to put in a prompt
- Session state, current work, in-flight issues. That goes in
.trinity/local.json(todos[]) andDASHBOARD.local.json. - Long explanations of how a system works. Plant a breadcrumb ("see
@branch --help") and move on. - Personal notes ("remember, you like short replies"). That goes in
.trinity/observations.json. - Version numbers, PR numbers, dates. Those rot within days.
- Full command output, example responses, long examples. Cite the command, don't inline it.
Mechanical checks
These can be verified automatically with 4 regex rules against any .aipass/*.md file:
- No
^##or^###lines (heading depth) - No
\*\*[^*]+\*\*or\*[^*]+\*sequences outside code blocks (emphasis) - No
^---$lines (dividers) - No fenced code blocks longer than ~15 lines in body (excluding directory trees)
These are not currently enforced by seedgo — per @seedgo's Track 5 recommendation, prompt format is an editorial convention, not a code quality standard. Enforcement is optional future work as an extension to readme_check.py.
Reference files
.aipass/tier0_kernel.md+.aipass/tier1_navmap.md— the live injected prompts (Tier 0 every turn, Tier 1 periodic); canonical examples of the format.aipass/aipass_global_prompt.md— superseded by the tiers (FPLAN-0284), kept as a reference snapshot- Branch
.aipass/aipass_local_prompt.mdfiles — should follow the same rules - This file — reference for authoring new prompts or auditing existing ones