bobp 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. bobp/__init__.py +3 -0
  2. bobp/cli.py +80 -0
  3. bobp/templates/README.md +227 -0
  4. bobp/templates/SHORTHAND_GUIDE.md +232 -0
  5. bobp/templates/STARTUP.md +85 -0
  6. bobp/templates/agents/AGENT.md +88 -0
  7. bobp/templates/agents/AGENTS.md +88 -0
  8. bobp/templates/agents/CHAT.diagram.md +8 -0
  9. bobp/templates/agents/CHAT.md +12 -0
  10. bobp/templates/agents/DOCUMENTATION_INDEX.md +180 -0
  11. bobp/templates/agents/PROJECT.md.template +43 -0
  12. bobp/templates/agents/bob/HELP.md +224 -0
  13. bobp/templates/agents/bob/SKILL.md.txt +156 -0
  14. bobp/templates/agents/bob/state.md +41 -0
  15. bobp/templates/agents/cypher/SKILL.md.txt +171 -0
  16. bobp/templates/agents/cypher/state.md +41 -0
  17. bobp/templates/agents/morpheus/SKILL.md.txt +179 -0
  18. bobp/templates/agents/morpheus/state.md +41 -0
  19. bobp/templates/agents/mouse/SKILL.md.txt +195 -0
  20. bobp/templates/agents/mouse/state.md +41 -0
  21. bobp/templates/agents/neo/SKILL.md.txt +234 -0
  22. bobp/templates/agents/neo/state.md +41 -0
  23. bobp/templates/agents/oracle/.archive_COMMANDS.md +92 -0
  24. bobp/templates/agents/oracle/SKILL.md.txt +224 -0
  25. bobp/templates/agents/oracle/lessons.md +5 -0
  26. bobp/templates/agents/oracle/memory.md +17 -0
  27. bobp/templates/agents/oracle/state.md +41 -0
  28. bobp/templates/agents/skills/bloop/SKILL.md.txt +91 -0
  29. bobp/templates/agents/skills/bob-protocol/SKILL.md.txt +216 -0
  30. bobp/templates/agents/skills/bob-tools/SKILL.md.txt +131 -0
  31. bobp/templates/agents/skills/build-env/SKILL.md.txt +335 -0
  32. bobp/templates/agents/skills/chat/SKILL.md.txt +84 -0
  33. bobp/templates/agents/skills/deploy/SKILL.md.txt +112 -0
  34. bobp/templates/agents/skills/epic/SKILL.md.txt +105 -0
  35. bobp/templates/agents/skills/fix/SKILL.md.txt +124 -0
  36. bobp/templates/agents/skills/impl/SKILL.md.txt +137 -0
  37. bobp/templates/agents/skills/init/SKILL.md.txt +144 -0
  38. bobp/templates/agents/skills/judge/SKILL.md.txt +183 -0
  39. bobp/templates/agents/skills/linter/SKILL.md.txt +108 -0
  40. bobp/templates/agents/skills/make/SKILL.md.txt +112 -0
  41. bobp/templates/agents/skills/make-discover/SKILL.md.txt +44 -0
  42. bobp/templates/agents/skills/personas/SKILL.md.txt +92 -0
  43. bobp/templates/agents/skills/prep-clear/SKILL.md.txt +132 -0
  44. bobp/templates/agents/skills/refactor/SKILL.md.txt +127 -0
  45. bobp/templates/agents/skills/render/SKILL.md.txt +191 -0
  46. bobp/templates/agents/skills/spike/SKILL.md.txt +108 -0
  47. bobp/templates/agents/skills/sprint/SKILL.md.txt +389 -0
  48. bobp/templates/agents/skills/story/SKILL.md.txt +108 -0
  49. bobp/templates/agents/skills/test-runner/SKILL.md.txt +68 -0
  50. bobp/templates/agents/skills/uat/SKILL.md.txt +111 -0
  51. bobp/templates/agents/skills/via/SKILL.md.txt +70 -0
  52. bobp/templates/agents/smith/SKILL.md.txt +307 -0
  53. bobp/templates/agents/smith/state.md +41 -0
  54. bobp/templates/agents/tank/SKILL.md.txt +162 -0
  55. bobp/templates/agents/tank/state.md +41 -0
  56. bobp/templates/agents/templates/ARTIFACTS.md +49 -0
  57. bobp/templates/agents/templates/_template_ARCH.md +93 -0
  58. bobp/templates/agents/templates/_template_CHAT.md +22 -0
  59. bobp/templates/agents/templates/_template_DECISION.md +53 -0
  60. bobp/templates/agents/templates/_template_DOMAIN.md +119 -0
  61. bobp/templates/agents/templates/_template_LESSON.md +36 -0
  62. bobp/templates/agents/templates/_template_PERSONA_SKILL.md +80 -0
  63. bobp/templates/agents/templates/_template_SDLC.javascript.md +27 -0
  64. bobp/templates/agents/templates/_template_SDLC.md +147 -0
  65. bobp/templates/agents/templates/_template_SDLC.python.md +26 -0
  66. bobp/templates/agents/templates/_template_TEST_STRATEGY.md +75 -0
  67. bobp/templates/agents/templates/_template_UAT_PLAN.md +46 -0
  68. bobp/templates/agents/templates/_template_USER_STORIES.md +59 -0
  69. bobp/templates/agents/templates/_template_finding.md +48 -0
  70. bobp/templates/agents/templates/_template_state.md +35 -0
  71. bobp/templates/agents/templates/_template_task.md +79 -0
  72. bobp/templates/agents/templates/_template_tldr.md +36 -0
  73. bobp/templates/agents/trin/SKILL.md.txt +207 -0
  74. bobp/templates/agents/trin/state.md +41 -0
  75. bobp/templates/docs/PERSONA_EVALUATION.md +74 -0
  76. bobp/templates/docs/WALKTHROUGH.md +565 -0
  77. bobp/tools/__init__.py +0 -0
  78. bobp/tools/_bob_manage.py +211 -0
  79. bobp/tools/_common.py +35 -0
  80. bobp/tools/bob_clean.py +14 -0
  81. bobp/tools/bob_diff.py +17 -0
  82. bobp/tools/bob_install.py +20 -0
  83. bobp/tools/bob_pull.py +19 -0
  84. bobp/tools/bob_update.py +17 -0
  85. bobp/tools/chat.py +116 -0
  86. bobp/tools/chat_diagram.py +326 -0
  87. bobp/tools/chat_merge.py +234 -0
  88. bobp/tools/chat_report.py +338 -0
  89. bobp/tools/make.py +195 -0
  90. bobp/tools/mermaid_render/package.json +10 -0
  91. bobp/tools/mermaid_render/render.mjs +100 -0
  92. bobp/tools/persona_eval.py +592 -0
  93. bobp/tools/persona_eval_assets/__init__.py +1 -0
  94. bobp/tools/persona_eval_assets/catalog.json +131 -0
  95. bobp/tools/persona_eval_assets/package-lock.json +10186 -0
  96. bobp/tools/persona_eval_assets/package.json +12 -0
  97. bobp/tools/persona_eval_jev.py +315 -0
  98. bobp/tools/prep_tldr.py +270 -0
  99. bobp/tools/session_trace.py +277 -0
  100. bobp/tools/setup_agent_links.py +735 -0
  101. bobp/tools/teardown_agent_links.py +225 -0
  102. bobp/tools/tldr.py +162 -0
  103. bobp/tools/trace_annotate.py +647 -0
  104. bobp/tools/trace_rules.json +32 -0
  105. bobp-0.1.0.dist-info/METADATA +110 -0
  106. bobp-0.1.0.dist-info/RECORD +110 -0
  107. bobp-0.1.0.dist-info/WHEEL +5 -0
  108. bobp-0.1.0.dist-info/entry_points.txt +2 -0
  109. bobp-0.1.0.dist-info/licenses/LICENSE +674 -0
  110. bobp-0.1.0.dist-info/top_level.txt +1 -0
bobp/__init__.py ADDED
@@ -0,0 +1,3 @@
1
+ """bobp: CLI front-end for the Bob Protocol multi-persona AI development framework."""
2
+
3
+ __version__ = "0.1.0"
bobp/cli.py ADDED
@@ -0,0 +1,80 @@
1
+ """bobp command-line dispatcher.
2
+
3
+ TLDR:
4
+ Single `bobp <subcommand> [args...]` entry point that front-ends the
5
+ scripts in bobp.tools. Each subcommand maps to a tool module; the
6
+ module is imported lazily (only when its subcommand is invoked) so
7
+ that subcommands with extra dependencies (prep-tldr, session-trace,
8
+ trace-annotate all import the separate `via` package) don't block
9
+ unrelated subcommands like `bobp chat` from running without it
10
+ installed. Argument parsing itself is delegated entirely to each
11
+ module's own main(), which parses sys.argv directly, so this
12
+ dispatcher just rewrites sys.argv[0] to the subcommand name before
13
+ calling in.
14
+
15
+ Bob-protocol project management (install/update/pull/clean/diff) is
16
+ implemented natively in bobp.tools._bob_manage; the templates Makefile's
17
+ install_bob/update_bob/pull_bob/clean_bob/diff_bob targets are now thin
18
+ wrappers that just call these subcommands.
19
+ """
20
+
21
+ import importlib
22
+ import sys
23
+
24
+ SUBCOMMANDS = {
25
+ "chat": "bobp.tools.chat",
26
+ "chat-diagram": "bobp.tools.chat_diagram",
27
+ "chat-merge": "bobp.tools.chat_merge",
28
+ "chat-report": "bobp.tools.chat_report",
29
+ "make": "bobp.tools.make",
30
+ "persona-eval": "bobp.tools.persona_eval",
31
+ "prep-tldr": "bobp.tools.prep_tldr",
32
+ "session-trace": "bobp.tools.session_trace",
33
+ "setup-agent-links": "bobp.tools.setup_agent_links",
34
+ "teardown-agent-links": "bobp.tools.teardown_agent_links",
35
+ "tldr": "bobp.tools.tldr",
36
+ "trace-annotate": "bobp.tools.trace_annotate",
37
+ "install": "bobp.tools.bob_install",
38
+ "update": "bobp.tools.bob_update",
39
+ "pull": "bobp.tools.bob_pull",
40
+ "clean": "bobp.tools.bob_clean",
41
+ "diff": "bobp.tools.bob_diff",
42
+ }
43
+
44
+
45
+ def print_help() -> None:
46
+ print("usage: bobp <subcommand> [args...]")
47
+ print()
48
+ print("subcommands:")
49
+ for name in sorted(SUBCOMMANDS):
50
+ print(f" {name}")
51
+ print()
52
+ print("Run `bobp <subcommand> --help` for subcommand-specific options.")
53
+
54
+
55
+ def main(argv: "list[str] | None" = None) -> int:
56
+ argv = sys.argv[1:] if argv is None else list(argv)
57
+
58
+ if not argv:
59
+ print_help()
60
+ return 1
61
+
62
+ if argv[0] in ("-h", "--help"):
63
+ print_help()
64
+ return 0
65
+
66
+ name, rest = argv[0], argv[1:]
67
+ module_path = SUBCOMMANDS.get(name)
68
+ if module_path is None:
69
+ print(f"bobp: unknown subcommand '{name}'", file=sys.stderr)
70
+ print_help()
71
+ return 1
72
+
73
+ module = importlib.import_module(module_path)
74
+ sys.argv = [name, *rest]
75
+ module.main()
76
+ return 0
77
+
78
+
79
+ if __name__ == "__main__":
80
+ sys.exit(main())
@@ -0,0 +1,227 @@
1
+ TL;DR: BobProtocol is a reusable Claude Code Skills framework. Invoke personas with `*chat`, Bloop commands (`*fix`, `*impl`, `*plan sprint`), or direct skill triggers. State persists per-persona in `agents/[persona]/`.
2
+
3
+ # BobProtocol: Multi-Persona AI Development Framework
4
+
5
+ A reusable multi-harness agent-skills framework that orchestrates a team of specialized AI personas. One LLM dynamically switches between 9 expert roles based on task context, with persistent state and structured handoffs across sessions.
6
+
7
+ ## How It Works
8
+
9
+ Each persona is an agent instruction file with standard YAML frontmatter for `name` and `description`:
10
+ - A Markdown command interface documenting `*prefix command` invocations
11
+ - Optional `Triggers` and `Requires` sections in the body for invocation aliases and prerequisite skills
12
+ - State files in `agents/[persona]/` — the only memory that survives context clears and session restarts
13
+
14
+ All coordination flows through `agents/CHAT.md` — a shared team log that every persona reads on entry.
15
+
16
+ ## The Team
17
+
18
+ | Persona | Role | Prefix | Responsibility |
19
+ |---------|------|--------|----------------|
20
+ | **Neo** | Senior SWE | `*swe` | Implementation, debugging, coding |
21
+ | **Morpheus** | Tech Lead | `*lead` | Architecture, design decisions, code review |
22
+ | **Trin** | QA Guardian | `*qa` | Testing, quality gates, coverage |
23
+ | **Oracle** | Knowledge Officer | `*ora` | Documentation, knowledge queries, decisions |
24
+ | **Mouse** | Scrum Master | `*sm` | Sprint tracking, coordination, velocity |
25
+ | **Cypher** | Product Manager | `*pm` | Requirements, user stories, PRDs |
26
+ | **Bob** | Prompt Engineer | `*prompt` | Agent creation, system improvement |
27
+ | **Smith** | HCI Expert | `*user` | Usability testing, HCI evaluation, sprint gates |
28
+ | **Tank** | DevOps Engineer | `*devops` | IaC, CI/CD, deployment automation, environment management, systems reliability |
29
+
30
+ ## Skills & Workflow Loops
31
+
32
+ Bob Protocol organizes autonomous workflows into hierarchical loops and supporting capabilities:
33
+
34
+ ### Planning Loops (Strategic Scoping & Specification)
35
+ | Skill / Trigger | Focus / Deliverable | Literature |
36
+ |-----------------|---------------------|------------|
37
+ | `epic` / `*plan epic` | Problem framing, appetite budget, domain model (`DOMAIN.md`) | *Shape Up* (Singer) / *Inspired* (Cagan) |
38
+ | `story` / `*plan story` | Vertical user story slicing, INVEST criteria, ADRs (`ARCH.md`), test strategy | *User Story Mapping* (Patton) / *Agile Estimating* (Cohn) |
39
+ | `sprint` / `*plan sprint` | Sprint planning, SDLC verification, task board (`task.md`) with Work Loops | *The Scrum Guide* (Schwaber & Sutherland) |
40
+
41
+ ### Work Loops (Tactical Execution Chains)
42
+ | Skill / Trigger | Execution Chain | Invariant / Literature |
43
+ |-----------------|-----------------|------------------------|
44
+ | `impl` / `*impl` | Neo TDD → Trin verify → Morpheus review | **Test-First**: failing test required before production code (*TDD* — Beck) |
45
+ | `fix` / `*fix` | Neo diagnose → User confirm → Neo fix → Trin test → Morpheus review | **Reproduce First**: diagnose & confirm before edits (*Debugging* — Agans) |
46
+ | `refactor` / `*refactor` | Morpheus plan → Trin baseline → Neo restructure → Trin parity → Morpheus | **Two Hats**: zero behavioral change, green before/after (*Refactoring* — Fowler) |
47
+ | `spike` / `*spike` | Oracle survey → Neo prototype → Morpheus decision/ADR | **Disposable**: timeboxed, zero prod commits (*XP Installed* / *Shape Up*) |
48
+ | `uat` / `*uat` | Trin acceptance matrix → Smith UX audit → Cypher sign-off | **Real-World Experience**: end-to-end evaluation (*Agile Testing* — Crispin) |
49
+ | `deploy` / `*deploy` | Tank Makefile deploy → Trin live smoke test | **Pipeline as Code**: automated release via SDLC Makefile (*Continuous Delivery*) |
50
+ | `bloop` / `*bloop` | Multi-persona work-loop conductor and catalog | Autonomous orchestration, state preservation, anti-loop guards |
51
+
52
+ ### Supporting Protocol & Tool Skills
53
+ - **Session Lifecycle**: `init` (session startup & discovery), `prep-clear` (checkpointing state before `/clear`), `judge` / `*judge` (persona, skill, and tool evaluation)
54
+ - **Protocol & Operations**: `bob-protocol` (routing & state protocol), `bob-tools` (`bobp` CLI operations), `build-env` (`docs/SDLC.md` management), `chat` (team logging), `linter` (code analysis), `make` (captured target runner), `make-discover` (target self-discovery), `personas` (specialist switching), `render` (cloud deployment), `test-runner` (bounded tests), `via` (symbol lookup)
55
+
56
+ ## Invoking Agents
57
+
58
+ ### Autonomous Workflow Loops (Recommended)
59
+ ```bash
60
+ # Strategic Planning Loops
61
+ *plan epic <name> # Cypher framing → Smith gate → Morpheus domain → (Spikes)
62
+ *plan story <slice> # Cypher story → Smith gate 1 → Morpheus arch → Trin test → Smith gate 2
63
+ *plan sprint # Cypher → Smith gate → Morpheus → Smith gate → Mouse task board
64
+
65
+ # Tactical Work Loops
66
+ *impl <task> # Neo TDD (red-green-refactor) → Trin verify → Morpheus review
67
+ *fix <bug> # Neo repro/diagnose → confirm → surgical fix → Trin regression sweep
68
+ *refactor <target> # Morpheus plan → Trin baseline → Neo restructure → Trin parity
69
+ *spike <topic> # Oracle survey → Neo prototype → Morpheus decision / ADR
70
+ *uat <scope> # Trin scenario matrix → Smith UX evaluation → Cypher sign-off
71
+ *deploy <env> # Tank Makefile deploy → Trin live smoke test
72
+ ```
73
+
74
+ ### `*chat` — auto-select a persona for a single task
75
+ ```
76
+ *chat fix the authentication bug in auth.py
77
+ *chat what's the current sprint status?
78
+ ```
79
+
80
+ ### `*chat @Persona` — direct single-persona invocation
81
+ Directly invoke a persona using Gemini's `@` syntax or the internal `@Persona` trigger.
82
+
83
+ ```
84
+ *chat @neo *fix authentication bug in auth.py
85
+ @neo *fix authentication bug in auth.py
86
+ *chat @trin *test all
87
+ *chat @oracle *ora ask What's our pattern for error handling?
88
+ *chat @smith *user review the sprint stories
89
+ ```
90
+
91
+ > **Note on Harness Prefixes**: Different AI harnesses use different prefixes for direct invocation (e.g., `@persona` or `/persona` in Gemini CLI, `/persona` in Claude, `$persona` in Codex). If you are invoked directly via such a command, you MUST log the invocation to `agents/CHAT.md` immediately upon entry if it has not already been logged.
92
+
93
+
94
+ ### Direct skill triggers — bypass chat routing
95
+ ```
96
+ *swe impl Add input validation to the API
97
+ *qa test all
98
+ *ora ask Where is the database schema defined?
99
+ ```
100
+
101
+ ## Project Structure
102
+
103
+ ```
104
+ agents/
105
+ ├── CHAT.md # Shared team communication log
106
+ ├── CHAT.diagram.md # Auto-generated Mermaid view of CHAT.md (derived, don't edit)
107
+ ├── PROJECT.md # Project capabilities (created by setup when missing)
108
+ ├── PROJECT.md.template # Reference template for capability declarations
109
+ ├── [persona]/ # Per-persona state and working memory (e.g. neo/, trin/)
110
+ │ ├── SKILL.md # Persona definition + command interface
111
+ │ └── state.md # Context, current task, and resume plan (state)
112
+ ├── skills/ # 24 shared skills discovered by harnesses
113
+ │ ├── epic/ # Strategic epic planning (*plan epic)
114
+ │ ├── story/ # User story slicing & ADRs (*plan story)
115
+ │ ├── sprint/ # Sprint planning & cadence container (*plan sprint)
116
+ │ ├── impl/ # Feature TDD work-loop (*impl)
117
+ │ ├── fix/ # Defect diagnosis & surgical fix work-loop (*fix)
118
+ │ ├── refactor/ # Behavior-preserving refactoring work-loop (*refactor)
119
+ │ ├── spike/ # Disposable research spike work-loop (*spike)
120
+ │ ├── uat/ # End-to-end acceptance & UX audit work-loop (*uat)
121
+ │ ├── deploy/ # Automated delivery & live smoke work-loop (*deploy)
122
+ │ ├── bloop/ # Work-loop conductor & catalog (*bloop)
123
+ │ ├── init/ # Session initialization & resume (*init, *resume)
124
+ │ ├── prep-clear/ # Context checkpointing before /clear (*prep-clear)
125
+ │ ├── judge/ # Agent & prompt optimization loop (*judge)
126
+ │ └── ... # Supporting tool skills (make, chat, via, build-env, etc.)
127
+ └── templates/ # Document and state file templates (ARTIFACTS.md, rubrics)
128
+ .claude/skills/ # Discovery links to persona and shared-skill folders
129
+ ```
130
+
131
+ `bobp` never installs, generates, or modifies a `Makefile` — that stays entirely
132
+ yours. See "Running Your Own Make Targets" below.
133
+
134
+ ## Installing into a Project
135
+
136
+ `bobp` is installed separately from the framework files. This project version
137
+ is not yet published to PyPI; from a BobProtocol source checkout, install the
138
+ CLI as a uv-managed user tool:
139
+
140
+ ```bash
141
+ cd /path/to/bob_protocol
142
+ uv tool install --editable .
143
+ ```
144
+
145
+ Installing, updating, pulling, diffing, and cleaning a Bob Protocol install
146
+ are `bobp` subcommands, not `make` targets:
147
+
148
+ ```bash
149
+ # First install
150
+ bobp install /path/to/your/project
151
+
152
+ # Later, once installed
153
+ bobp update /path/to/your/project # refresh skills/templates, preserving state
154
+ bobp pull /path/to/another/project # pull framework updates from a peer project
155
+ bobp diff /path/to/your/project # compare the template against an install
156
+ bobp clean # reset state files and remove symlinks (run inside the project)
157
+ ```
158
+
159
+ ## Project Setup (after install)
160
+
161
+ 1. Run skill link setup:
162
+ ```bash
163
+ bobp setup-agent-links
164
+ ```
165
+
166
+ 2. Review project capabilities in `agents/PROJECT.md`. Setup creates this file when it is missing and enables `via` only when its integration setup succeeds:
167
+ ```markdown
168
+ ## Capabilities
169
+ via: enabled # present only when via integration setup succeeds
170
+ ```
171
+
172
+ Link setup creates project discovery links and may also write to the user's
173
+ Codex skills directory and Codex MCP configuration. When the `via` CLI is
174
+ installed, setup configures the project's `.mcp.json` and index too. Review its
175
+ output; restart Codex after creating or changing Codex links.
176
+
177
+ ## Team Coordination Commands
178
+
179
+ These are `bobp` subcommands, not `make` targets — bob never touches your `Makefile`:
180
+
181
+ ```bash
182
+ bobp tldr # show TL;DR from all project files
183
+ bobp chat "..." --persona X --cmd Y # post a message to CHAT.md
184
+ bobp chat-diagram # regenerate CHAT.diagram.md on demand
185
+ ```
186
+
187
+ ## Running Your Own Make Targets
188
+
189
+ If your project has its own `Makefile` (test, lint, build — whatever you already
190
+ use), run it through `bobp make` instead of bare `make` to get output captured to
191
+ `build/build.out` and a pass/fail status posted to CHAT.md:
192
+
193
+ ```bash
194
+ bobp make test # silent — exit code + 10-line tail on finish
195
+ bobp make -vvv test # full output live
196
+ ```
197
+
198
+ See the `make` skill for the full contract.
199
+
200
+ ## Optional: via Integration
201
+
202
+ [`via`](https://github.com/drewpifer/via) is a Python codebase symbol index. When enabled in `agents/PROJECT.md`, personas use `via` for code navigation instead of reading files directly — saving significant context.
203
+
204
+ Running `bobp setup-agent-links` installs the generic via MCP config with `via install mcp`, ensures the project has a `.via/index.db`, and, when Codex is installed, registers the same server with Codex using `codex mcp add via --env HOME=<project-root> -- <via> mcp serve --no-web <project-root>`.
205
+
206
+ Each persona knows how to use `via` in the way that best fits their role (e.g. Trin uses `--stale` for coverage gap detection, Morpheus uses `-oD` for architecture diagrams).
207
+
208
+ ## State Management and Cold Start Recovery
209
+
210
+ State files in `agents/[persona]/state.md` are your working memory — the only state that survives context clears and session restarts.
211
+
212
+ Every persona follows the strict State Management Protocol:
213
+ - **ENTRY**: Read `agents/CHAT.md` (last 10–20 messages) → load `agents/[persona]/state.md`
214
+ - **WORK**: Update working memory with progress, blockers, and findings
215
+ - **EXIT (Mandatory Hard Gate)**:
216
+ 1. Follow `agents/skills/prep-clear/SKILL.md` before `/clear` or persona switch — flush Context, Current Task progress %, and Next Steps cold-start resume plan to `state.md`.
217
+ 2. Post handoff message: `bobp chat "<summary> @NextPersona *command" --persona <Name> --cmd handoff --to <next>`.
218
+ 3. Never switch personas or clear context without completing both steps.
219
+
220
+ If resuming after a context clear with no memory:
221
+ 1. Run `*init` or read the bottom of `agents/CHAT.md` to find the last handoff
222
+ 2. Load that persona's `state.md`
223
+ 3. Resume immediately from its `## Next Steps` section
224
+
225
+ See **[docs/WALKTHROUGH.md](docs/WALKTHROUGH.md)** for a complete step-by-step tutorial building a restaurant reservation app, and **[docs/PERSONA_EVALUATION.md](docs/PERSONA_EVALUATION.md)** for setting up, running, and reviewing persona eval suites.
226
+ See **[STARTUP.md](STARTUP.md)** for LLM startup instructions.
227
+ See **[SHORTHAND_GUIDE.md](SHORTHAND_GUIDE.md)** for the full trigger/command reference.
@@ -0,0 +1,232 @@
1
+ TL;DR: Use `*fix`, `*impl`, `*plan sprint` for full workflow chains. Use `*chat @Persona *command` for direct single-persona control. All triggers listed below.
2
+
3
+ # Shorthand Guide — Skill Triggers
4
+
5
+ ## Session Lifecycle (Init, Checkpoint & Resume)
6
+
7
+ Formalized in `agents/skills/init/SKILL.md` & `agents/skills/prep-clear/SKILL.md`.
8
+
9
+ | Command / Trigger | Action | Primary Handler |
10
+ |-------------------|--------|-----------------|
11
+ | `/init`, `*init`, `/bob-protocol init` | Read chat/state, check discovery links, post initialization, and display quick reference | Bob (`*prompt`) |
12
+ | `*resume` | Cold-start recovery from last CHAT.md handoff | Last active persona |
13
+ | `*prep-clear`, `/prep-clear`, `*checkpoint` | Reconcile state, write resume plan, prepare for `/clear` | Active persona |
14
+ | `*startup`, `*chat init` | Startup protocol alias | Bob (`*prompt`) |
15
+
16
+ ---
17
+
18
+ ## Bloop Commands (Bob Loops — Hierarchical SDLC Cycles)
19
+
20
+ Multi-persona automated workflow loops decomposed into two hierarchical tiers: **Planning Loops** (strategic scoping and specification) and **Work Loops** (tactical execution and verification). Grounded in canonical software engineering literature (Beck, Agans, Fowler, Singer, Patton, Schwaber & Sutherland, Humble & Farley).
21
+
22
+ ### Planning Loops (Strategic Scoping & Specification)
23
+
24
+ | Command / Loop | Skill | Sequence | Primary Deliverables / Gates | Literature |
25
+ |----------------|-------|----------|------------------------------|------------|
26
+ | `*plan epic <name>` | `skills/epic` | Cypher → Smith → Morpheus → (Spikes) | Problem framing, appetite, `DOMAIN.md`, de-risking spikes | *Shape Up* (Singer) / *Inspired* (Cagan) |
27
+ | `*plan story <slice>` | `skills/story` | Cypher → [Smith Gate 1] → Morpheus → Trin → [Smith Gate 2] | Vertical slice, INVEST criteria, `ARCH.md` ADRs, `TEST_STRATEGY.md` | *User Story Mapping* (Patton) / *Agile Estimating* (Cohn) |
28
+ | `*plan sprint [tier1\|tier2]` | `skills/sprint` | Cypher → Smith → Morpheus → Smith → Mouse → Morpheus | Sprint goal, scoped stories, prioritized `task.md` with Work Loops | *The Scrum Guide* (Schwaber & Sutherland) |
29
+
30
+ ### Work Loops (Tactical Execution & Verification)
31
+
32
+ | Command / Loop | Skill | Sequence | Core Invariant | Literature |
33
+ |----------------|-------|----------|----------------|------------|
34
+ | `*impl <task>` | `skills/impl` | Neo → Trin → Morpheus | Test-first (no code without failing test); acceptance verified | *TDD: By Example* (Beck) |
35
+ | `*fix <defect>` | `skills/fix` | Neo → Trin → Morpheus | Reproduce & diagnose first; confirm diagnosis before editing; zero regressions | *Debugging* (Agans) |
36
+ | `*refactor <target>` | `skills/refactor` | Neo → Trin → Morpheus | Two-Hats rule; zero behavioral change; green baseline before and after | *Refactoring* (Fowler) |
37
+ | `*spike <unknown>` | `skills/spike` | Neo / Morpheus → Oracle | Disposable exploration; zero production code; outputs finding/decision | *XP Installed* (Jeffries) / *Shape Up* |
38
+ | `*uat <phase>` | `skills/uat` | Trin → Smith → (Neo if defect) | End-to-end acceptance + UX heuristic evaluation; defect halts to `*fix` | *Agile Testing* (Crispin & Gregory) |
39
+ | `*deploy <target>` | `skills/deploy` | Tank → Trin smoke | Automated release via Makefile; live smoke test before pass | *Continuous Delivery* (Humble & Farley) |
40
+ | `*judge <persona-or-skill>` | `skills/judge` | Trin → Smith → Neo or Bob → Trin | Evaluate a fixed scenario with evidence, then verify a focused fix in a fresh run | Eval-driven development |
41
+ | `*qa <scope>` | `skills/trin` | Trin → Morpheus | Test suite execution & codebase health verification | *Working Effectively with Legacy Code* |
42
+ | `*review <target>` | `skills/morpheus` | Morpheus → Trin | Architectural alignment, maintainability, and quality review | *Clean Architecture* (Martin) |
43
+
44
+ ---
45
+
46
+ ## Direct Skill Triggers
47
+
48
+ Invoke a persona directly — bypasses `*chat` routing.
49
+
50
+ ### Neo — Software Engineer
51
+ | Trigger | Action |
52
+ |---------|--------|
53
+ | `*swe impl <task>` | Implement a feature (TDD) |
54
+ | `*swe fix <issue>` | Diagnose and fix a bug |
55
+ | `*swe test <scope>` | Write and run tests |
56
+ | `*swe refactor <target>` | Refactor without changing behaviour |
57
+
58
+ ### Morpheus — Tech Lead
59
+ | Trigger | Action |
60
+ |---------|--------|
61
+ | `*lead arch <topic>` | Architecture review or decision |
62
+ | `*lead plan <story>` | Create technical implementation plan |
63
+ | `*lead decide <choice>` | Make and record an architectural decision |
64
+ | `*lead guide <area>` | Provide technical guidance |
65
+ | `*lead refactor <target>` | Plan a refactoring strategy |
66
+ | `*lead review <target>` | Review code for architecture alignment |
67
+
68
+ ### Trin — QA Guardian
69
+ | Trigger | Action |
70
+ |---------|--------|
71
+ | `*qa test <scope>` | Run tests (`all`, `unit`, `integration`, or specific) |
72
+ | `*qa uat <phase>` | UAT — verify acceptance criteria for a phase |
73
+ | `*qa verify <feature>` | Verify a feature meets acceptance criteria |
74
+ | `*qa review <change>` | Code review for quality and correctness |
75
+ | `*qa report` | Summarise codebase health |
76
+ | `*qa repro <issue>` | Create a minimal reproduction of a bug |
77
+
78
+ ### Oracle — Knowledge Officer
79
+ | Trigger | Action |
80
+ |---------|--------|
81
+ | `*ora ask <question>` | Query the knowledge base |
82
+ | `*ora record <type> <content>` | Log a decision, lesson, or finding |
83
+ | `*ora distill <file>` | Break down a large document with TL;DR + ToC |
84
+ | `*ora tldr [glob]` | Write/update TL;DR blocks in project files |
85
+ | `*ora groom` | Audit and organise the knowledge base |
86
+ | `*ora archive` | Archive old CHAT.md messages (>50-100 messages) |
87
+ | `*ora report <moniker>` | Archive the sprint chat and reset the current log through `bobp chat-report` |
88
+
89
+ ### Cypher — Product Manager
90
+ | Trigger | Action |
91
+ |---------|--------|
92
+ | `*pm plan sprint` | Define sprint stories and acceptance criteria |
93
+ | `*pm story <request>` | Write user stories from a feature request |
94
+ | `*pm doc <topic>` | Create or update a PRD or product document |
95
+ | `*pm assess <scope>` | Assess feature readiness or completion status |
96
+ | `*pm prioritize` | Prioritize the backlog |
97
+ | `*pm update` | Post product status update |
98
+ | `*pm launch <sprint>` | Close sprint — announce, backlog retro feedback, update changelog |
99
+
100
+ ### Mouse — Scrum Master
101
+ | Trigger | Action |
102
+ |---------|--------|
103
+ | `*sm plan sprint` | Break sprint into short phases (1-3 tasks each) |
104
+ | `*sm status` | Report current sprint progress |
105
+ | `*sm tasks` | List all active tasks |
106
+ | `*sm next` | Identify the next task to work on |
107
+ | `*sm blocked` | Report and triage a blocker |
108
+ | `*sm done <task>` | Mark a task complete |
109
+ | `*sm assign <task> <persona>` | Assign a task to a persona |
110
+ | `*sm velocity` | Report team velocity metrics |
111
+
112
+ ### Smith — HCI Expert & UX Advocate
113
+ | Trigger | Action |
114
+ |---------|--------|
115
+ | `*user review <stories>` | Review user stories against HCI principles |
116
+ | `*user test <feature>` | Usability-test a feature by running the software |
117
+ | `*user consult <question>` | Quick, non-blocking UX opinion |
118
+ | `*user feedback <question>` | Deeper investigation of open UX/domain questions |
119
+ | `*user research <topic>` | Research comparable tools — ends with `@Oracle *ora record` |
120
+ | `*user story <id> <criteria>` | Co-author user-perspective acceptance criteria |
121
+ | `*user bug CMD:... \| EXPECTED:... \| ACTUAL:... \| UX ISSUE:...` | File a usability defect |
122
+ | `*user approve` | Approve a sprint review gate |
123
+ | `*user reject REASON:... \| FIX:...` | Block a sprint gate — both fields required |
124
+ | `*user blocked <reason>` | Signal gate cannot complete — escalates to Mouse |
125
+
126
+ ### Bob — Prompt Engineer
127
+ | Trigger | Action |
128
+ |---------|--------|
129
+ | `*prompt <description>` | Create a new agent SKILL.md |
130
+ | `*reprompt <instructions>` | Update existing agent prompts |
131
+ | `*learn <lesson>` | Broadcast lesson to all agents |
132
+ | `*help` | Show full system reference |
133
+ | `*bob review <target>` | Review agent interactions and prompt effectiveness |
134
+
135
+ ### Tank — DevOps Engineer
136
+ | Trigger | Action |
137
+ |---------|--------|
138
+ | `*devops deploy` | Orchestrate deployment |
139
+ | `*devops infra` | Declarative IaC management |
140
+ | `*devops ci` | Maintain CI/CD pipelines |
141
+ | `*devops env` | Environment hygiene & secrets |
142
+ | `*devops bootstrap <lang>` | Setup build environment & manifest |
143
+ | `*devops sdlc [check]` | Create or audit docs/SDLC.md |
144
+
145
+ ---
146
+
147
+ ## `*chat` Routing Syntax
148
+
149
+ ```
150
+ *chat <message> # auto-select persona
151
+ *chat @<Persona> *<command> <args> # direct invocation
152
+ @<Persona> <message> # Gemini-style direct invocation
153
+ ```
154
+
155
+ ### Note on Direct Invocations
156
+ Different AI harnesses use different prefixes for direct persona invocation (e.g., `@persona` or `/persona` in Gemini CLI, `/persona` in Claude, `$persona` in Codex).
157
+
158
+ **Rule**: If you are invoked directly via such a command, you MUST log the invocation to `agents/CHAT.md` immediately upon entry if it has not already been logged. This ensures the shared team context is complete.
159
+ ```
160
+ *chat fix the bug in parser.py
161
+ *chat @neo *swe fix bug in parser.py line 42
162
+ *chat @trin *qa test all
163
+ *chat @oracle *ora ask What's our DB pattern?
164
+ *chat @morpheus *lead decide REST vs GraphQL
165
+ *chat @cypher *pm story users need CSV export
166
+ *chat @mouse *sm status
167
+ *chat @bob *reprompt Neo needs to know about the new cache layer
168
+ *chat @smith *user review sprint stories
169
+ *chat @smith *user test the export command
170
+ ```
171
+
172
+ ---
173
+
174
+ ## Sprint Cycle Quick Reference
175
+
176
+ ```
177
+ *plan sprint (or *plan epic / *plan story)
178
+ → Cypher *pm plan sprint
179
+ → [Smith *user approve] ← gate
180
+ → Morpheus *lead arch sprint
181
+ → [Smith *user approve] ← gate
182
+ → Mouse *sm plan sprint (task board with typed Work Loops)
183
+ → Morpheus *lead review sprint plan
184
+
185
+ Per task / phase (execute typed Work Loops):
186
+ → *impl <task> (Neo TDD → Trin verify → Morpheus review)
187
+ → *fix <defect> (Neo diagnose/fix → Trin test → Morpheus review)
188
+ → *refactor <target> (Neo restructure → Trin parity → Morpheus review)
189
+ → *spike <unknown> (Neo/Morpheus prototype → Oracle record)
190
+ → *uat <phase> (Trin acceptance → Smith UX evaluation)
191
+ → *deploy <target> (Tank automated deploy → Trin smoke)
192
+
193
+ Sprint close:
194
+ → Oracle *ora groom
195
+ → Smith *user test + *user feedback
196
+ → All *sprint retro ← feeds backlog
197
+ → Cypher *pm launch <sprint>
198
+ ```
199
+
200
+ ---
201
+
202
+ ## Coordination Commands
203
+
204
+ These are `bobp` subcommands, not `make` targets — bob never installs or owns
205
+ a `Makefile`:
206
+
207
+ ```bash
208
+ bobp tldr # TL;DR from all project files
209
+ bobp chat "..." --persona X --cmd Y # post to CHAT.md
210
+ bobp chat-diagram # regenerate CHAT.diagram.md
211
+ ```
212
+
213
+ ## Running Your Own Make Targets
214
+
215
+ If your project has its own `Makefile`, run it through `bobp make` for output
216
+ captured to `build/build.out` and a status post to CHAT.md:
217
+
218
+ ```bash
219
+ bobp make test # captured, silent on pass
220
+ bobp make -vvv test # full output live
221
+ ```
222
+
223
+ Installing/updating/pulling/diffing/cleaning a Bob Protocol install is done
224
+ with the `bobp` CLI, not make:
225
+
226
+ ```bash
227
+ bobp diff <path> # diff framework files with a project
228
+ bobp update <path> # push framework updates to a project
229
+ bobp pull <path> # pull framework updates from a project
230
+ bobp install <path> # fresh install into a project
231
+ bobp clean # reset state files and symlinks (run inside the project)
232
+ ```
@@ -0,0 +1,85 @@
1
+ TL;DR: On startup, read CHAT.md for context, load your persona's state.md, then wait for user direction. If resuming mid-task, check its Next Steps section and continue from there.
2
+
3
+ # BobProtocol: LLM Startup Instructions
4
+
5
+ See instructions here -> `agents/skills/init/SKILL.md` & `agents/skills/prep-clear/SKILL.md`
6
+
7
+ ## On Startup (Fresh Session)
8
+
9
+ 1. Read `agents/CHAT.md` — last 10-20 messages for current team context
10
+ 2. Load the active persona's `agents/[persona]/state.md`
11
+ 3. If `agents/PROJECT.md` exists, read it for project capabilities (e.g. `via: enabled`)
12
+ 4. Check that agent discovery links are present; run `bobp setup-agent-links` only when links are missing, stale, or after repository updates
13
+ 5. Post the persona's initialization message to `agents/CHAT.md`
14
+ 6. Display the quick reference below
15
+ 7. Wait for user input — do not auto-execute tasks
16
+
17
+ ## Cold Start Recovery (After Context Clear or Session Restart)
18
+
19
+ If you were mid-task when context was lost:
20
+
21
+ 1. Read the bottom of `agents/CHAT.md` — find the last handoff message
22
+ 2. Identify which persona was active and what command was pending
23
+ 3. Load that persona's state file:
24
+ - `agents/[persona]/state.md`
25
+ 4. Post a resume message:
26
+ ```bash
27
+ bobp chat "Resuming <task> from last session." --persona <Name> --cmd resume
28
+ ```
29
+ 5. Continue from the `## Next Steps` section of `state.md` — do not restart from scratch
30
+
31
+ If `CHAT.md` has no clear handoff, ask the user: *"I'm resuming — what should I pick up?"*
32
+
33
+ ---
34
+
35
+ ## Quick Reference
36
+
37
+ ### Planning Loops (Strategic Scoping & Specification)
38
+ ```
39
+ *plan epic <name> → Cypher shape → Smith gate → Morpheus domain → (Spikes)
40
+ *plan story <slice> → Cypher story → Smith gate 1 → Morpheus arch → Trin test → Smith gate 2
41
+ *plan sprint → Cypher → Smith gate → Morpheus → Smith gate → Mouse task board
42
+ ```
43
+
44
+ ### Work Loops (Tactical Execution Chains)
45
+ ```
46
+ *impl <task> → Neo TDD (red-green-refactor) → Trin verify → Morpheus review
47
+ *fix <bug> → Neo repro/diagnose → confirm → surgical fix → Trin regression → Morpheus review
48
+ *refactor <target> → Morpheus plan → Trin baseline → Neo restructure → Trin parity → Morpheus review
49
+ *spike <topic> → Oracle prior art → Neo prototype → Morpheus decision/ADR
50
+ *uat <scope> → Trin scenario matrix → Smith UX evaluation → Cypher business sign-off
51
+ *deploy <env> → Tank Makefile deploy → Trin live smoke test
52
+ ```
53
+
54
+ ### `*chat` Routing
55
+ ```
56
+ *chat <message> # auto-select persona
57
+ *chat @<Persona> *<command> <args> # direct invocation
58
+ @<Persona> <message> # Gemini-style direct invocation
59
+ ```
60
+
61
+ **Note on Direct Invocations**: If you are invoked directly via a harness-specific command (e.g., `@persona` or `/persona` in Gemini CLI, `/persona` in Claude, `$persona` in Codex), you MUST log the invocation to `agents/CHAT.md` immediately upon entry if it has not already been logged.
62
+
63
+ ### Direct Skill Triggers
64
+ ```
65
+ *swe impl / *swe fix / *swe test # Neo
66
+ *qa test / *qa verify / *qa review # Trin
67
+ *lead arch / *lead decide # Morpheus
68
+ *ora ask / *ora record / *ora groom # Oracle
69
+ *sm status / *sm plan / *sm blocked # Mouse
70
+ *pm story / *pm doc / *pm assess # Cypher
71
+ *user review / *user test / *user approve # Smith
72
+ *prompt / *reprompt / *learn # Bob
73
+ *devops deploy / *devops infra / *devops sdlc # Tank
74
+ *judge <persona-or-skill> # Evaluate and improve a persona, skill, or tool
75
+ ```
76
+
77
+ ### Make Targets (Single Front Door via bobp make)
78
+ ```bash
79
+ bobp make help # list all project targets
80
+ bobp make test # run tests (captured to build/build.out)
81
+ bobp make -vvv test # run tests (full output live)
82
+ bobp chat "..." --persona ... --cmd ... --to ... # post to CHAT.md
83
+ ```
84
+
85
+ See **[SHORTHAND_GUIDE.md](SHORTHAND_GUIDE.md)** for the full command reference.