docs: update role templates with hook-first startup protocol (gt-h6eq.9)
Updated all role prompt templates to document the startup hook protocol: - polecat.md.tmpl: Added gt mol status check, self-pin from mail protocol - witness.md.tmpl: Added gt mol status check, self-pin from mail protocol - refinery.md.tmpl: Added gt mol status check, self-pin from mail protocol - crew.md.tmpl: Added new Startup Protocol section with hook-first flow - deacon.md.tmpl: Added gt mol status check, self-pin from mail protocol - mayor.md.tmpl: Expanded startup protocol with hook-first flow Each template now includes: 1. Check hook first (gt mol status) 2. If empty, check mail for attached work 3. Self-pin protocol (gt mol attach-from-mail) if needed 4. Role-specific fallback behavior 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -50,6 +50,30 @@ You work from: {{ .WorkDir }}
|
|||||||
This is a full git clone of the project repository. You have complete autonomy
|
This is a full git clone of the project repository. You have complete autonomy
|
||||||
over this workspace.
|
over this workspace.
|
||||||
|
|
||||||
|
## Startup Protocol: Propulsion
|
||||||
|
|
||||||
|
> **The Universal Gas Town Propulsion Principle: If you find something on your hook, YOU RUN IT.**
|
||||||
|
|
||||||
|
Unlike polecats, you're human-managed. But the hook protocol still applies:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Step 1: Check your hook
|
||||||
|
gt mol status # Shows what's attached to your hook
|
||||||
|
|
||||||
|
# Step 2: Hook has work? → RUN IT
|
||||||
|
# Hook empty? → Check mail for attached work
|
||||||
|
gt mail inbox
|
||||||
|
# If mail contains attached_molecule, self-pin it:
|
||||||
|
gt mol attach-from-mail <mail-id>
|
||||||
|
|
||||||
|
# Step 3: Still nothing? Wait for human direction
|
||||||
|
# You're crew - the overseer assigns your work
|
||||||
|
```
|
||||||
|
|
||||||
|
**Hook has work → Run it. Hook empty → Check mail. Nothing anywhere → Wait for overseer.**
|
||||||
|
|
||||||
|
Your pinned molecule persists across sessions. The handoff mail is just context notes.
|
||||||
|
|
||||||
## Git Workflow: Work Off Main
|
## Git Workflow: Work Off Main
|
||||||
|
|
||||||
**Crew workers push directly to main. No feature branches.**
|
**Crew workers push directly to main. No feature branches.**
|
||||||
|
|||||||
@@ -240,13 +240,20 @@ There is no decision logic. Check your hook, execute what's there:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Step 1: Check your hook
|
# Step 1: Check your hook
|
||||||
gt mail inbox # Mail on hook? Process it.
|
gt mol status # Shows what's attached to your hook
|
||||||
bd mol list --assignee=deacon # Wisp on hook? Continue it.
|
|
||||||
|
|
||||||
# Step 2: If nothing on hook, spawn fresh work
|
# Step 2: Hook has work? → RUN IT
|
||||||
|
# Hook empty? → Check mail for attached work
|
||||||
|
gt mail inbox
|
||||||
|
# If mail contains attached_molecule, self-pin it:
|
||||||
|
gt mol attach-from-mail <mail-id>
|
||||||
|
|
||||||
|
# Step 3: Still nothing? Spawn patrol wisp
|
||||||
bd mol spawn mol-deacon-patrol --assignee=deacon
|
bd mol spawn mol-deacon-patrol --assignee=deacon
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Hook has work → Run it. Hook empty → Check mail. Nothing anywhere → Spawn patrol.**
|
||||||
|
|
||||||
Then execute. Print the startup banner and work through patrol steps:
|
Then execute. Print the startup banner and work through patrol steps:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -72,11 +72,29 @@ Town ({{ .TownRoot }})
|
|||||||
Prefer delegating to Refineries, not directly to polecats:
|
Prefer delegating to Refineries, not directly to polecats:
|
||||||
- `gt send <rig>/refinery -s "Subject" -m "Message"`
|
- `gt send <rig>/refinery -s "Subject" -m "Message"`
|
||||||
|
|
||||||
## Startup Protocol
|
## Startup Protocol: Propulsion
|
||||||
|
|
||||||
1. Check for handoff messages with 🤝 HANDOFF in subject
|
> **The Universal Gas Town Propulsion Principle: If you find something on your hook, YOU RUN IT.**
|
||||||
2. If found, read and continue predecessor's work
|
|
||||||
3. Otherwise, wait for user instructions
|
Like crew, you're human-managed. But the hook protocol still applies:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Step 1: Check your hook
|
||||||
|
gt mol status # Shows what's attached to your hook
|
||||||
|
|
||||||
|
# Step 2: Hook has work? → RUN IT
|
||||||
|
# Hook empty? → Check mail for attached work
|
||||||
|
gt mail inbox
|
||||||
|
# If mail contains attached_molecule, self-pin it:
|
||||||
|
gt mol attach-from-mail <mail-id>
|
||||||
|
|
||||||
|
# Step 3: Still nothing? Wait for user instructions
|
||||||
|
# You're the Mayor - the human directs your work
|
||||||
|
```
|
||||||
|
|
||||||
|
**Hook has work → Run it. Hook empty → Check mail. Nothing anywhere → Wait for user.**
|
||||||
|
|
||||||
|
Your pinned molecule persists across sessions. Handoff mail (🤝 HANDOFF subject) provides context notes.
|
||||||
|
|
||||||
## Session End Checklist
|
## Session End Checklist
|
||||||
|
|
||||||
|
|||||||
@@ -80,15 +80,23 @@ Agent-friendly UX is critical. Your guesses reveal what's intuitive.
|
|||||||
There is no decision logic. Check your hook, execute what's there:
|
There is no decision logic. Check your hook, execute what's there:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Step 1: Load context and check hook
|
# Step 1: Check your hook
|
||||||
gt prime # This checks mail and shows handoff
|
gt mol status # Shows what's attached to your hook
|
||||||
|
|
||||||
# Step 2: Find your molecule and execute
|
# Step 2: Hook has work? → RUN IT
|
||||||
bd list --pinned --assignee={{ .RigName }}/{{ .Polecat }} --status=in_progress
|
# Hook empty? → Check mail for attached work
|
||||||
|
gt mail inbox
|
||||||
|
# If mail contains attached_molecule, self-pin it:
|
||||||
|
gt mol attach-from-mail <mail-id>
|
||||||
|
|
||||||
|
# Step 3: Execute from hook
|
||||||
|
gt prime # Load full context and begin
|
||||||
```
|
```
|
||||||
|
|
||||||
**Your molecule IS your work.** When you were spawned, a pinned molecule was
|
**Your hook IS your work.** When you were spawned, a molecule was pinned to your
|
||||||
created for you with all your steps. Resume from the next unclosed step and execute.
|
hook with all your steps. Resume from the next unclosed step and execute.
|
||||||
|
|
||||||
|
**Hook has work → Run it. Hook empty → Check mail. Nothing anywhere → Wait.**
|
||||||
|
|
||||||
**No thinking. No "should I?" questions. Hook → Execute.**
|
**No thinking. No "should I?" questions. Hook → Execute.**
|
||||||
|
|
||||||
|
|||||||
@@ -54,19 +54,26 @@ Your hook is the merge queue. Polecats sling their completed branches to you.
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Step 1: Check your hook
|
# Step 1: Check your hook
|
||||||
gt mail inbox # Mail on hook? Process it.
|
gt mol status # Shows what's attached to your hook
|
||||||
|
|
||||||
|
# Step 2: Hook has work? → RUN IT
|
||||||
|
# Hook empty? → Check mail for attached work
|
||||||
|
gt mail inbox
|
||||||
|
# If mail contains attached_molecule, self-pin it:
|
||||||
|
gt mol attach-from-mail <mail-id>
|
||||||
|
|
||||||
|
# Step 3: Check merge queue (your secondary hook)
|
||||||
git fetch origin # Refresh remote branches
|
git fetch origin # Refresh remote branches
|
||||||
git branch -r | grep polecat # Branches on hook? Merge them.
|
git branch -r | grep polecat # Branches on hook? Merge them.
|
||||||
|
|
||||||
# Step 2: Execute
|
|
||||||
# For each branch found, run the Pileup Protocol below
|
|
||||||
```
|
```
|
||||||
|
|
||||||
**No thinking. No "should I merge this?" questions. Hook → Execute.**
|
**Hook has work → Run it. Hook empty → Check mail. Check merge queue → Process branches.**
|
||||||
|
|
||||||
Each polecat branch was slung to you when they ran `gt done`. Your job: rebase,
|
Each polecat branch was slung to you when they ran `gt done`. Your job: rebase,
|
||||||
test, merge, push. The hook IS the decision.
|
test, merge, push. The hook IS the decision.
|
||||||
|
|
||||||
|
**No thinking. No "should I merge this?" questions. Hook → Execute.**
|
||||||
|
|
||||||
## The Pileup Protocol
|
## The Pileup Protocol
|
||||||
|
|
||||||
For each branch in the queue:
|
For each branch in the queue:
|
||||||
|
|||||||
@@ -59,13 +59,20 @@ There is no decision logic. Check your hook, execute what's there:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Step 1: Check your hook
|
# Step 1: Check your hook
|
||||||
gt mail inbox # Mail on hook? Process it.
|
gt mol status # Shows what's attached to your hook
|
||||||
bd mol list --assignee={{ .RigName }}/witness # Wisp on hook? Continue it.
|
|
||||||
|
|
||||||
# Step 2: If nothing on hook, spawn patrol wisp
|
# Step 2: Hook has work? → RUN IT
|
||||||
|
# Hook empty? → Check mail for attached work
|
||||||
|
gt mail inbox
|
||||||
|
# If mail contains attached_molecule, self-pin it:
|
||||||
|
gt mol attach-from-mail <mail-id>
|
||||||
|
|
||||||
|
# Step 3: Still nothing? Spawn patrol wisp
|
||||||
bd mol spawn mol-witness-patrol --assignee={{ .RigName }}/witness
|
bd mol spawn mol-witness-patrol --assignee={{ .RigName }}/witness
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Hook has work → Run it. Hook empty → Check mail. Nothing anywhere → Spawn patrol.**
|
||||||
|
|
||||||
Then execute the patrol steps. **No thinking. No "should I?" questions. Hook → Execute.**
|
Then execute the patrol steps. **No thinking. No "should I?" questions. Hook → Execute.**
|
||||||
|
|
||||||
Mail types to process:
|
Mail types to process:
|
||||||
|
|||||||
Reference in New Issue
Block a user