agent-bios 0.15.0 → 0.17.0

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 (66) hide show
  1. package/DEPENDENCIES.md +37 -13
  2. package/README.md +421 -32
  3. package/claude/CLAUDE.md +3 -3
  4. package/claude/agents/frontier.md +1 -1
  5. package/claude/agents/sweep.md +3 -3
  6. package/claude/agents/workhorse.md +2 -2
  7. package/claude/guides/claude-prompting.md +72 -39
  8. package/claude/guides/cli-multi-model-workflow.md +33 -15
  9. package/claude/guides/gpt-prompting.md +103 -39
  10. package/claude/guides/review-request.md +27 -0
  11. package/claude/guides/session-distill-workflow.md +54 -2
  12. package/claude/guides/slide-writing/RUNBOOK.md +137 -0
  13. package/claude/guides/slide-writing/scripts/pair.py +979 -0
  14. package/claude/guides/slide-writing/scripts/render.mjs +82 -0
  15. package/claude/guides/slide-writing.md +195 -0
  16. package/claude/guides/svg-visualization-guide.md +9 -0
  17. package/claude/guides/tooling-gotchas.md +1 -1
  18. package/claude/guides/verification-discipline.md +5 -1
  19. package/claude/hooks/tooling-gotchas-hook.py +9 -14
  20. package/claude/skills/understand/SKILL.md +83 -0
  21. package/codex/AGENTS.md +3 -3
  22. package/codex/agents/frontier.toml +2 -1
  23. package/codex/agents/reviewer.toml +1 -1
  24. package/codex/agents/sweep.toml +3 -3
  25. package/codex/agents/workhorse.toml +1 -1
  26. package/codex/config-additions.toml +1 -1
  27. package/codex/guides/claude-prompting.md +72 -39
  28. package/codex/guides/cli-multi-model-workflow.md +33 -15
  29. package/codex/guides/gpt-prompting.md +103 -39
  30. package/codex/guides/review-request.md +27 -0
  31. package/codex/guides/session-distill-workflow.md +54 -2
  32. package/codex/guides/slide-writing/RUNBOOK.md +137 -0
  33. package/codex/guides/slide-writing/scripts/pair.py +979 -0
  34. package/codex/guides/slide-writing/scripts/render.mjs +82 -0
  35. package/codex/guides/slide-writing.md +195 -0
  36. package/codex/guides/svg-visualization-guide.md +9 -0
  37. package/codex/guides/tooling-gotchas.md +1 -1
  38. package/codex/guides/verification-discipline.md +5 -1
  39. package/compose/assemble.py +290 -14
  40. package/compose/bootstrap/SKILL.md +129 -0
  41. package/compose/check-domains.py +102 -9
  42. package/compose/corpus-state.py +4 -0
  43. package/compose/corpus.py +387 -0
  44. package/compose/corpus_catalog.py +931 -0
  45. package/compose/corpus_install.py +1670 -0
  46. package/compose/corpus_session.py +825 -0
  47. package/compose/corpus_store.py +1423 -0
  48. package/compose/corpus_transaction.py +256 -0
  49. package/compose/corpus_ui.py +655 -0
  50. package/compose/corpus_understand.py +522 -0
  51. package/compose/domains.json +102 -100
  52. package/compose/register-hooks.py +6 -8
  53. package/install.sh +84 -18
  54. package/launch/agent-launch.py +1413 -193
  55. package/launch/agent-launch.toml +12 -16
  56. package/launch/agent-launch.zsh +16 -2
  57. package/launch/i18n/en.toml +135 -7
  58. package/launch/i18n/ja.toml +135 -7
  59. package/launch/i18n/ko.toml +135 -7
  60. package/launch/shell_integration.py +267 -0
  61. package/learn/collect-learning.py +46 -19
  62. package/learn/migrate-learnings.py +10 -1
  63. package/package.json +13 -3
  64. package/provenance.json +1 -1
  65. package/session-cost.py +22 -2
  66. package/wrappers/codex-helm.sh +3 -3
@@ -10,113 +10,115 @@
10
10
  "office-work": "Office artifacts: spreadsheet processing"
11
11
  },
12
12
  "bullets": [
13
- {"anchor": "Prefer concise Korean responses", "tier": "env-personal", "domains": []},
14
- {"anchor": "Keep file changes within the requested scope", "tier": "core", "domains": []},
15
- {"anchor": "First identify the goal, scope, ambiguities", "tier": "core", "domains": []},
16
- {"anchor": "Resolve ambiguity from context when safe", "tier": "core", "domains": []},
17
- {"anchor": "For simple requests, choose the most direct", "tier": "core", "domains": []},
18
- {"anchor": "For non-trivial requests, compare 2-4 methods", "tier": "core", "domains": []},
19
- {"anchor": "Mark one default method", "tier": "core", "domains": []},
20
- {"anchor": "Execute the chosen method accurately", "tier": "core", "domains": []},
21
- {"anchor": "Return to understanding if a discovery breaks", "tier": "core", "domains": []},
22
- {"anchor": "Reconsider the method if the selected approach", "tier": "core", "domains": []},
23
- {"anchor": "Log non-blocking discoveries and continue", "tier": "core", "domains": []},
24
- {"anchor": "If the same loopback happens twice", "tier": "core", "domains": []},
25
- {"anchor": "Compare the result with the selected", "tier": "core", "domains": []},
26
- {"anchor": "Ask decision questions in outcome terms", "tier": "core", "domains": []},
27
- {"anchor": "When the user may not know the domain", "tier": "core", "domains": []},
28
- {"anchor": "Present 2-4 meaningful options", "tier": "core", "domains": []},
29
- {"anchor": "For each option, state what changes", "tier": "core", "domains": []},
30
- {"anchor": "Translate technical terms into plain consequences", "tier": "core", "domains": []},
31
- {"anchor": "Ask for the user's goal or constraint", "tier": "core", "domains": []},
32
- {"anchor": "Evaluate user suggestions for goal fit", "tier": "core", "domains": []},
33
- {"anchor": "Distinguish implementation feasibility from recommendation", "tier": "core", "domains": []},
34
- {"anchor": "Do not default to a restrictive lens", "tier": "core", "domains": []},
35
- {"anchor": "Treat user suggestions, inherited premises, prior diagnoses", "tier": "core", "domains": []},
36
- {"anchor": "For structured-output, runtime-authority, capability-surface", "tier": "domain", "domains": ["llm-pipeline-dev"]},
37
- {"anchor": "Use instructions to describe intended work", "tier": "domain", "domains": ["llm-pipeline-dev"]},
38
- {"anchor": "Use the LLM for semantic work", "tier": "domain", "domains": ["llm-pipeline-dev"]},
39
- {"anchor": "Use the capability surface for structural constraints", "tier": "domain", "domains": ["llm-pipeline-dev"]},
40
- {"anchor": "Enforce constraints through the capability surface", "tier": "domain", "domains": ["llm-pipeline-dev"]},
41
- {"anchor": "Use tools/code for deterministic work", "tier": "domain", "domains": ["llm-pipeline-dev"]},
42
- {"anchor": "When exactness, freshness, scale, repeatability", "tier": "domain", "domains": ["llm-pipeline-dev"]},
43
- {"anchor": "Let the LLM design merge, projection", "tier": "domain", "domains": ["llm-pipeline-dev"]},
44
- {"anchor": "For required structured or machine-consumed outputs", "tier": "domain", "domains": ["llm-pipeline-dev"]},
45
- {"anchor": "Let tools/code own ids, paths, serialization", "tier": "domain", "domains": ["llm-pipeline-dev"]},
46
- {"anchor": "Keep deterministic values out of LLM authority", "tier": "domain", "domains": ["llm-pipeline-dev"]},
47
- {"anchor": "For simple stable explanations or planning", "tier": "domain", "domains": ["llm-pipeline-dev"]},
48
- {"anchor": "Treat a produced field, flag, signal", "tier": "domain", "domains": ["llm-pipeline-dev"]},
49
- {"anchor": "Hard-block only deterministically decidable structural", "tier": "domain", "domains": ["llm-pipeline-dev"]},
50
- {"anchor": "Runtime/code may enforce the contract", "tier": "domain", "domains": ["llm-pipeline-dev"]},
51
- {"anchor": "When adding, changing, renaming, splitting, or exposing anything lasting or shared", "tier": "domain", "domains": ["builder-base"]},
52
- {"anchor": "Before fixing a review finding or test failure", "tier": "domain", "domains": ["builder-base"]},
53
- {"anchor": "For `.xlsx` editing, generation, reconciliation", "tier": "domain", "domains": ["office-work"]},
54
- {"anchor": "For development work, read and use", "tier": "domain", "domains": ["builder-base"]},
55
- {"anchor": "For mock, fixture, fake, stub, simulated-provider", "tier": "domain", "domains": ["builder-base"]},
56
- {"anchor": "Own the full lifecycle of what you create", "tier": "domain", "domains": ["builder-base"]},
57
- {"anchor": "Land risky or behavior-changing work behind", "tier": "domain", "domains": ["builder-base"]},
58
- {"anchor": "For composing a review request, packet", "tier": "domain", "domains": ["builder-base"]},
59
- {"anchor": "After every meaningful code, ontology, config", "tier": "domain", "domains": ["builder-base"]},
60
- {"anchor": "For choosing verification depth, the per-domain mix, the case space, what makes a completion criterion falsifiable", "tier": "domain", "domains": ["builder-base"]},
61
- {"anchor": "Report the checks run, results", "tier": "core", "domains": []},
62
- {"anchor": "Trust a green check only when it traversed", "tier": "domain", "domains": ["builder-base"]},
63
- {"anchor": "Before comparing two of anything", "tier": "domain", "domains": ["builder-base"]},
64
- {"anchor": "For concrete shell/CLI traps", "tier": "domain", "domains": ["builder-base"]},
65
- {"anchor": "Ambient state — the active shell", "tier": "domain", "domains": ["builder-base"]},
66
- {"anchor": "Before relying on any model id", "tier": "domain", "domains": ["builder-base"]},
67
- {"anchor": "Scope destructive actions (kill, rm, force-push", "tier": "domain", "domains": ["builder-base"]},
68
- {"anchor": "Never accept secrets through transcript- or history-logged channels", "tier": "core", "domains": []},
69
- {"anchor": "When a secret must be supplied", "tier": "domain", "domains": ["builder-base"]},
70
- {"anchor": "Treat a coarse runtime signal", "tier": "domain", "domains": ["builder-base"]},
71
- {"anchor": "Standing spawn policy: check the spawn gates", "tier": "domain", "domains": ["multi-agent-orchestration"]},
72
- {"anchor": "Down-spawns carry a machine-checkable done-when", "tier": "domain", "domains": ["multi-agent-orchestration"]},
73
- {"anchor": "For work spanning multiple models or CLI agents", "tier": "domain", "domains": ["multi-agent-orchestration"]},
74
- {"anchor": "For composing a prompt, packet, or tool description", "tier": "domain", "domains": ["multi-agent-orchestration"]},
75
- {"anchor": "Allocate models by difficulty", "tier": "domain", "domains": ["multi-agent-orchestration"]},
76
- {"anchor": "Judge a review by how much independence", "tier": "domain", "domains": ["multi-agent-orchestration"]},
77
- {"anchor": "dual-provider frontier design drafts", "tier": "domain", "domains": ["multi-agent-orchestration"]},
78
- {"anchor": "Never retry-storm a live rate limit", "tier": "domain", "domains": ["multi-agent-orchestration"]},
79
- {"anchor": "On any resumed, cleared, or relocated session", "tier": "domain", "domains": ["multi-agent-orchestration"]},
80
- {"anchor": "Keep runtime code, active docs, and execution-facing", "tier": "domain", "domains": ["builder-base"]},
81
- {"anchor": "For where a comment, a compatibility note, deprecated behavior, a rejected alternative", "tier": "domain", "domains": ["builder-base"]},
82
- {"anchor": "For SVG diagrams, service blueprints", "tier": "domain", "domains": ["visualization-docs"]},
83
- {"anchor": "When a concept is easier to understand visually", "tier": "domain", "domains": ["visualization-docs"]},
84
- {"anchor": "Use HTML for comparisons, flows, state changes", "tier": "domain", "domains": ["visualization-docs"]},
85
- {"anchor": "Keep HTML self-contained, accessible, and minimal", "tier": "domain", "domains": ["visualization-docs"]},
86
- {"anchor": "Use plain text when it is clearer", "tier": "domain", "domains": ["visualization-docs"]},
87
- {"anchor": "For the detailed `IMPLEMENTATION_MAP.html` construction rules", "tier": "domain", "domains": ["visualization-docs"]},
88
- {"anchor": "In repos with implementation code", "tier": "domain", "domains": ["visualization-docs"]},
89
- {"anchor": "`learn!` — session learning", "tier": "core", "domains": []}
13
+ {"anchor": "Prefer concise Korean responses", "tier": "env-personal", "domains": [], "item_id": "rule-001"},
14
+ {"anchor": "Keep file changes within the requested scope", "tier": "core", "domains": [], "item_id": "rule-002"},
15
+ {"anchor": "First identify the goal, scope, ambiguities", "tier": "core", "domains": [], "item_id": "rule-003"},
16
+ {"anchor": "Resolve ambiguity from context when safe", "tier": "core", "domains": [], "item_id": "rule-004"},
17
+ {"anchor": "For simple requests, choose the most direct", "tier": "core", "domains": [], "item_id": "rule-005"},
18
+ {"anchor": "For non-trivial requests, compare 2-4 methods", "tier": "core", "domains": [], "item_id": "rule-006"},
19
+ {"anchor": "Mark one default method", "tier": "core", "domains": [], "item_id": "rule-007"},
20
+ {"anchor": "Execute the chosen method accurately", "tier": "core", "domains": [], "item_id": "rule-008"},
21
+ {"anchor": "Return to understanding if a discovery breaks", "tier": "core", "domains": [], "item_id": "rule-009"},
22
+ {"anchor": "Reconsider the method if the selected approach", "tier": "core", "domains": [], "item_id": "rule-010"},
23
+ {"anchor": "Log non-blocking discoveries and continue", "tier": "core", "domains": [], "item_id": "rule-011"},
24
+ {"anchor": "If the same loopback happens twice", "tier": "core", "domains": [], "item_id": "rule-012"},
25
+ {"anchor": "Compare the result with the selected", "tier": "core", "domains": [], "item_id": "rule-013"},
26
+ {"anchor": "Ask decision questions in outcome terms", "tier": "core", "domains": [], "item_id": "rule-014"},
27
+ {"anchor": "When the user may not know the domain", "tier": "core", "domains": [], "item_id": "rule-015"},
28
+ {"anchor": "Present 2-4 meaningful options", "tier": "core", "domains": [], "item_id": "rule-016"},
29
+ {"anchor": "For each option, state what changes", "tier": "core", "domains": [], "item_id": "rule-017"},
30
+ {"anchor": "Translate technical terms into plain consequences", "tier": "core", "domains": [], "item_id": "rule-018"},
31
+ {"anchor": "Ask for the user's goal or constraint", "tier": "core", "domains": [], "item_id": "rule-019"},
32
+ {"anchor": "Evaluate user suggestions for goal fit", "tier": "core", "domains": [], "item_id": "rule-020"},
33
+ {"anchor": "Distinguish implementation feasibility from recommendation", "tier": "core", "domains": [], "item_id": "rule-021"},
34
+ {"anchor": "Do not default to a restrictive lens", "tier": "core", "domains": [], "item_id": "rule-022"},
35
+ {"anchor": "Treat user suggestions, inherited premises, prior diagnoses", "tier": "core", "domains": [], "item_id": "rule-023"},
36
+ {"anchor": "For structured-output, runtime-authority, capability-surface", "tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "rule-024"},
37
+ {"anchor": "Use instructions to describe intended work", "tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "rule-025"},
38
+ {"anchor": "Use the LLM for semantic work", "tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "rule-026"},
39
+ {"anchor": "Use the capability surface for structural constraints", "tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "rule-027"},
40
+ {"anchor": "Enforce constraints through the capability surface", "tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "rule-028"},
41
+ {"anchor": "Use tools/code for deterministic work", "tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "rule-029"},
42
+ {"anchor": "When exactness, freshness, scale, repeatability", "tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "rule-030"},
43
+ {"anchor": "Let the LLM design merge, projection", "tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "rule-031"},
44
+ {"anchor": "For required structured or machine-consumed outputs", "tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "rule-032"},
45
+ {"anchor": "Let tools/code own ids, paths, serialization", "tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "rule-033"},
46
+ {"anchor": "Keep deterministic values out of LLM authority", "tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "rule-034"},
47
+ {"anchor": "For simple stable explanations or planning", "tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "rule-035"},
48
+ {"anchor": "Treat a produced field, flag, signal", "tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "rule-036"},
49
+ {"anchor": "Hard-block only deterministically decidable structural", "tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "rule-037"},
50
+ {"anchor": "Runtime/code may enforce the contract", "tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "rule-038"},
51
+ {"anchor": "When adding, changing, renaming, splitting, or exposing anything lasting or shared", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-039"},
52
+ {"anchor": "Before fixing a review finding or test failure", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-040"},
53
+ {"anchor": "For `.xlsx` editing, generation, reconciliation", "tier": "domain", "domains": ["office-work"], "item_id": "rule-041"},
54
+ {"anchor": "For development work, read and use", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-042"},
55
+ {"anchor": "For mock, fixture, fake, stub, simulated-provider", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-043"},
56
+ {"anchor": "Own the full lifecycle of what you create", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-044"},
57
+ {"anchor": "Land risky or behavior-changing work behind", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-045"},
58
+ {"anchor": "For composing a review request, packet", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-046"},
59
+ {"anchor": "After every meaningful code, ontology, config", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-047"},
60
+ {"anchor": "For choosing verification depth, the per-domain mix, the case space, what makes a completion criterion falsifiable", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-048"},
61
+ {"anchor": "Report the checks run, results", "tier": "core", "domains": [], "item_id": "rule-049"},
62
+ {"anchor": "Trust a green check only when it traversed", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-050"},
63
+ {"anchor": "Before comparing two of anything", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-051"},
64
+ {"anchor": "For concrete shell/CLI traps", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-052"},
65
+ {"anchor": "Ambient state — the active shell", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-053"},
66
+ {"anchor": "Before relying on any model id", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-054"},
67
+ {"anchor": "Scope destructive actions (kill, rm, force-push", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-055"},
68
+ {"anchor": "Never accept secrets through transcript- or history-logged channels", "tier": "core", "domains": [], "item_id": "rule-056"},
69
+ {"anchor": "When a secret must be supplied", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-057"},
70
+ {"anchor": "Treat a coarse runtime signal", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-058"},
71
+ {"anchor": "Standing spawn policy: check the spawn gates", "tier": "domain", "domains": ["multi-agent-orchestration"], "item_id": "rule-059"},
72
+ {"anchor": "Down-spawns carry a machine-checkable done-when", "tier": "domain", "domains": ["multi-agent-orchestration"], "item_id": "rule-060"},
73
+ {"anchor": "For work spanning multiple models or CLI agents", "tier": "domain", "domains": ["multi-agent-orchestration"], "item_id": "rule-061"},
74
+ {"anchor": "For composing a prompt, packet, or tool description", "tier": "domain", "domains": ["multi-agent-orchestration"], "item_id": "rule-062"},
75
+ {"anchor": "Allocate models by difficulty", "tier": "domain", "domains": ["multi-agent-orchestration"], "item_id": "rule-063"},
76
+ {"anchor": "Judge a review by how much independence", "tier": "domain", "domains": ["multi-agent-orchestration"], "item_id": "rule-064"},
77
+ {"anchor": "dual-provider frontier design drafts", "tier": "domain", "domains": ["multi-agent-orchestration"], "item_id": "rule-065"},
78
+ {"anchor": "Never retry-storm a live rate limit", "tier": "domain", "domains": ["multi-agent-orchestration"], "item_id": "rule-066"},
79
+ {"anchor": "On any resumed, cleared, or relocated session", "tier": "domain", "domains": ["multi-agent-orchestration"], "item_id": "rule-067"},
80
+ {"anchor": "Keep runtime code, active docs, and execution-facing", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-068"},
81
+ {"anchor": "For where a comment, a compatibility note, deprecated behavior, a rejected alternative", "tier": "domain", "domains": ["builder-base"], "item_id": "rule-069"},
82
+ {"anchor": "For SVG diagrams, service blueprints", "tier": "domain", "domains": ["visualization-docs"], "item_id": "rule-070"},
83
+ {"anchor": "When a concept is easier to understand visually", "tier": "domain", "domains": ["visualization-docs"], "item_id": "rule-071"},
84
+ {"anchor": "Use HTML for comparisons, flows, state changes", "tier": "domain", "domains": ["visualization-docs"], "item_id": "rule-072"},
85
+ {"anchor": "Keep HTML self-contained, accessible, and minimal", "tier": "domain", "domains": ["visualization-docs"], "item_id": "rule-073"},
86
+ {"anchor": "Use plain text when it is clearer", "tier": "domain", "domains": ["visualization-docs"], "item_id": "rule-074"},
87
+ {"anchor": "For the detailed `IMPLEMENTATION_MAP.html` construction rules", "tier": "domain", "domains": ["visualization-docs"], "item_id": "rule-075"},
88
+ {"anchor": "In repos with implementation code", "tier": "domain", "domains": ["visualization-docs"], "item_id": "rule-076"},
89
+ {"anchor": "`learn!` — session learning", "tier": "core", "domains": [], "item_id": "rule-077"}
90
90
  ],
91
91
  "guides": {
92
- "claude-prompting.md": {"tier": "domain", "domains": ["multi-agent-orchestration"], "handles": ["per-family prompting guide", "계열별 prompting guide"]},
93
- "cli-multi-model-workflow.md": {"tier": "domain", "domains": ["multi-agent-orchestration"], "handles": ["multi-model guide", "multi-model 가이드"]},
94
- "coding-staged-workflow.md": {"tier": "domain", "domains": ["builder-base"]},
95
- "concept-economy.md": {"tier": "domain", "domains": ["builder-base"]},
96
- "documentation-hygiene.md": {"tier": "domain", "domains": ["builder-base"]},
97
- "gpt-prompting.md": {"tier": "domain", "domains": ["multi-agent-orchestration"], "handles": ["prompting guides for gpt-family"]},
98
- "implementation-map.md": {"tier": "domain", "domains": ["visualization-docs"]},
99
- "llm-capability-boundary-examples.md": {"tier": "domain", "domains": ["llm-pipeline-dev"]},
100
- "llm-capability-boundary-patterns.md": {"tier": "domain", "domains": ["llm-pipeline-dev"]},
101
- "llm-capability-boundary.md": {"tier": "domain", "domains": ["llm-pipeline-dev"]},
102
- "mock-realization-boundary.md": {"tier": "domain", "domains": ["builder-base"]},
103
- "review-defect-criteria.md": {"tier": "domain", "domains": ["builder-base"]},
104
- "review-request.md": {"tier": "domain", "domains": ["builder-base"]},
105
- "session-distill-workflow.md": {"tier": "infra", "domains": []},
106
- "learning-flow.md": {"tier": "infra", "domains": []},
107
- "svg-visualization-guide.md": {"tier": "domain", "domains": ["visualization-docs"]},
108
- "verification-discipline.md": {"tier": "domain", "domains": ["builder-base"]},
109
- "tooling-gotchas.md": {"tier": "domain", "domains": ["builder-base"]}
92
+ "claude-prompting.md": {"tier": "domain", "domains": ["multi-agent-orchestration"], "handles": ["per-family prompting guide", "계열별 prompting guide"], "item_id": "guide-claude-prompting"},
93
+ "cli-multi-model-workflow.md": {"tier": "domain", "domains": ["multi-agent-orchestration"], "handles": ["multi-model guide", "multi-model 가이드"], "item_id": "guide-cli-multi-model-workflow"},
94
+ "coding-staged-workflow.md": {"tier": "domain", "domains": ["builder-base"], "item_id": "guide-coding-staged-workflow"},
95
+ "concept-economy.md": {"tier": "domain", "domains": ["builder-base"], "item_id": "guide-concept-economy"},
96
+ "documentation-hygiene.md": {"tier": "domain", "domains": ["builder-base"], "item_id": "guide-documentation-hygiene"},
97
+ "gpt-prompting.md": {"tier": "domain", "domains": ["multi-agent-orchestration"], "handles": ["prompting guides for gpt-family"], "item_id": "guide-gpt-prompting"},
98
+ "implementation-map.md": {"tier": "domain", "domains": ["visualization-docs"], "item_id": "guide-implementation-map"},
99
+ "llm-capability-boundary-examples.md": {"tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "guide-llm-capability-boundary-examples"},
100
+ "llm-capability-boundary-patterns.md": {"tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "guide-llm-capability-boundary-patterns"},
101
+ "llm-capability-boundary.md": {"tier": "domain", "domains": ["llm-pipeline-dev"], "item_id": "guide-llm-capability-boundary"},
102
+ "mock-realization-boundary.md": {"tier": "domain", "domains": ["builder-base"], "item_id": "guide-mock-realization-boundary"},
103
+ "review-defect-criteria.md": {"tier": "domain", "domains": ["builder-base"], "item_id": "guide-review-defect-criteria"},
104
+ "review-request.md": {"tier": "domain", "domains": ["builder-base"], "item_id": "guide-review-request"},
105
+ "session-distill-workflow.md": {"tier": "infra", "domains": [], "item_id": "guide-session-distill-workflow"},
106
+ "learning-flow.md": {"tier": "infra", "domains": [], "item_id": "guide-learning-flow"},
107
+ "svg-visualization-guide.md": {"tier": "domain", "domains": ["visualization-docs"], "item_id": "guide-svg-visualization-guide"},
108
+ "slide-writing.md": {"tier": "domain", "domains": ["office-work", "visualization-docs"], "item_id": "skill-slide-writing"},
109
+ "verification-discipline.md": {"tier": "domain", "domains": ["builder-base"], "item_id": "guide-verification-discipline"},
110
+ "tooling-gotchas.md": {"tier": "domain", "domains": ["builder-base"], "item_id": "guide-tooling-gotchas"}
110
111
  },
111
112
  "hooks": {
112
- "tooling-gotchas-hook.py": {"tier": "domain", "domains": ["builder-base"], "source_guide": "tooling-gotchas.md"}
113
+ "tooling-gotchas-hook.py": {"tier": "domain", "domains": ["builder-base"], "source_guide": "tooling-gotchas.md", "item_id": "hook-tooling-gotchas-hook"}
113
114
  },
114
115
  "agents": {
115
- "frontier.md": {"tier": "domain", "domains": ["multi-agent-orchestration"]},
116
- "sweep.md": {"tier": "domain", "domains": ["multi-agent-orchestration"]},
117
- "workhorse.md": {"tier": "domain", "domains": ["multi-agent-orchestration"]}
116
+ "frontier.md": {"tier": "domain", "domains": ["multi-agent-orchestration"], "item_id": "agent-frontier"},
117
+ "sweep.md": {"tier": "domain", "domains": ["multi-agent-orchestration"], "item_id": "agent-sweep"},
118
+ "workhorse.md": {"tier": "domain", "domains": ["multi-agent-orchestration"], "item_id": "agent-workhorse"}
118
119
  },
119
120
  "skills": {
120
- "repo-charter": {"tier": "domain", "domains": ["builder-base"]}
121
+ "understand": {"tier": "core", "domains": [], "item_id": "skill-understand"},
122
+ "repo-charter": {"tier": "domain", "domains": ["builder-base"], "item_id": "skill-repo-charter"}
121
123
  }
122
124
  }
@@ -1,15 +1,13 @@
1
1
  #!/usr/bin/env python3
2
- """Register the manifest's hooks in a deployed settings.json (full-install path).
2
+ """Legacy utility: merge canonical hook registrations into Claude settings.
3
3
 
4
- The packaged path gets this for free: assemble.py composes the corpus and calls
5
- merge_settings on the way out. A full install never runs the assembler, so the
6
- hook files were deployed and nothing ever registered them — they sat on disk and
7
- never fired. This runs the assembler's own merge so both paths register
8
- identically, under the same name-based ownership rule.
4
+ The private installer registers no global host hooks. Explicit native session
5
+ activation is shared by Claude and Codex through corpus_catalog/corpus_session.
6
+ This compatibility utility retains the legacy Claude settings.json ownership
7
+ and merge behavior by calling the assembler's merge_settings implementation.
9
8
 
10
9
  Usage: register-hooks.py <repo> <claude-dir>
11
- Exit 0 on success; non-zero (with a message) if the merge could not run, which
12
- the installer reports as a note rather than failing the whole install.
10
+ Exit 0 on success; non-zero with a message if the legacy merge cannot run.
13
11
  """
14
12
  import importlib.util
15
13
  import json
package/install.sh CHANGED
@@ -389,7 +389,37 @@ assemble_corpus() {
389
389
  if [ -f "$CLAUDE_DIR/central/bundle.md" ]; then
390
390
  printf '%s\n' "$CLAUDE_DIR/central/bundle.md" >> "$MANIFEST"
391
391
  fi
392
- for sub in guides hooks agents; do
392
+ # A guide can carry a same-stem companion tree. The assembler owns that structure, so
393
+ # manifest it through its resolver rather than flattening `guides/*.md`: uninstall needs
394
+ # every deployed script/asset by its exact path, and must not claim a user-created sibling
395
+ # merely because it sits below one of our guide directories.
396
+ local source_guides="$REPO/claude/guides" codex_guides="$REPO/codex/guides"
397
+ manifest_guide_members() {
398
+ # Pin the installed resolver file independently of the selected content tree.
399
+ python3 - "$REPO/compose/assemble.py" "$1" "$2" <<'PY'
400
+ import pathlib
401
+ import sys
402
+
403
+ assembler, source, dest = map(pathlib.Path, sys.argv[1:])
404
+ sys.path.insert(0, str(assembler.parent))
405
+ from assemble import GuideMemberError, guide_member_map
406
+
407
+ try:
408
+ members = guide_member_map(source)
409
+ except GuideMemberError as exc:
410
+ raise SystemExit(f"invalid guide bundle source: {exc}")
411
+ for paths in members.values():
412
+ for rel in paths:
413
+ target = dest / rel
414
+ if target.is_file():
415
+ print(target)
416
+ PY
417
+ }
418
+ if ! manifest_guide_members "$source_guides" "$CLAUDE_DIR/central/guides" >> "$MANIFEST"; then
419
+ log "could not enumerate assembled Claude guide members for the manifest"
420
+ return 1
421
+ fi
422
+ for sub in hooks agents; do
393
423
  for s in "$REPO"/claude/"$sub"/*; do
394
424
  [ -f "$s" ] || continue
395
425
  dst="$CLAUDE_DIR/central/$sub/$(basename "$s")"
@@ -398,16 +428,10 @@ assemble_corpus() {
398
428
  if [ -f "$dst" ]; then printf '%s\n' "$dst" >> "$MANIFEST"; fi
399
429
  done
400
430
  done
401
- for g in "$REPO"/codex/guides/*.md; do
402
- [ -f "$g" ] || continue
403
- dst="$CODEX_DIR/guides/$(basename "$g")"
404
- # if-form, not `[ -f ] && printf`: when the alphabetically LAST guide is
405
- # not deployed (a partial domain selection on a fresh machine), the
406
- # compound's false status became the loop's, the loop's became the
407
- # function's, and the install died silently right after ASSEMBLED —
408
- # a latent first-user bug the I9 scenario exposed.
409
- if [ -f "$dst" ]; then printf '%s\n' "$dst" >> "$MANIFEST"; fi
410
- done
431
+ if ! manifest_guide_members "$codex_guides" "$CODEX_DIR/guides" >> "$MANIFEST"; then
432
+ log "could not enumerate assembled Codex guide members for the manifest"
433
+ return 1
434
+ fi
411
435
  fi
412
436
  return 0
413
437
  }
@@ -1718,7 +1742,11 @@ cmd_update() {
1718
1742
  if [ -e "$REPO/.git" ]; then
1719
1743
  log "Updating from git..."
1720
1744
  run git -C "$REPO" pull --ff-only
1721
- cmd_install
1745
+ if [ "${AGENT_BIOS_LEGACY_INSTALL:-0}" = 1 ]; then
1746
+ cmd_install
1747
+ else
1748
+ python3 "$REPO/compose/corpus_install.py" --repo "$REPO" install
1749
+ fi
1722
1750
  else
1723
1751
  log "Installed as an npm package. Update with:"
1724
1752
  log " npm install -g agent-bios@latest && agent-bios install"
@@ -1730,11 +1758,18 @@ cmd_update() {
1730
1758
 
1731
1759
  usage() {
1732
1760
  cat <<'EOF'
1733
- agent-bios — deploy the Claude/Codex instruction SSOT into $HOME (by copy).
1734
-
1735
- agent-bios install deploy into this environment (backs up + verifies)
1736
- agent-bios onboard interactive domain selection + install + activation canary
1737
- agent-bios verify check the deployed state matches the source
1761
+ agent-bios — manage private corpus content for explicitly activated sessions.
1762
+
1763
+ agent-bios install store a private runtime and corpus baseline
1764
+ agent-bios onboard select domains for future activated sessions
1765
+ agent-bios corpus open Corpus Studio; list/show/plan/apply also work non-TTY
1766
+ agent-bios understand list corpus learning bundles; --help shows session/discovery commands
1767
+ agent-bios shell show the optional zsh connection status
1768
+ agent-bios shell restore make bare claude/codex open the launcher TUI
1769
+ agent-bios shell remove return bare claude/codex to their native CLI
1770
+ agent-bios migrate preview legacy global cleanup; --apply --yes applies it
1771
+ agent-bios reset preview reset; --apply --yes --expected-revision REV applies it
1772
+ agent-bios verify verify the private runtime, baseline, and managed files
1738
1773
  agent-bios learn submit a session learning (reads the JSON record on
1739
1774
  stdin; this is what the learn! flow calls, and it
1740
1775
  works from any directory, unlike a repo-relative path)
@@ -1745,9 +1780,20 @@ agent-bios — deploy the Claude/Codex instruction SSOT into $HOME (by copy).
1745
1780
  agent-bios update --check ask the registry for the latest version and cache it
1746
1781
  for the launcher's badge; sends the package name and nothing
1747
1782
  else, runs at most daily, AGENT_BIOS_UPDATE_CHECK=0 disables it
1748
- agent-bios uninstall remove deployed files and the zsh hook
1783
+ agent-bios uninstall remove the private runtime; preserve personal and session data
1749
1784
  agent-bios help
1750
1785
 
1786
+ Launcher (run in an interactive terminal):
1787
+ agent-launch claude open the Claude launch TUI
1788
+ agent-launch codex open the Codex launch TUI
1789
+ agent-launch --corpus open Corpus Studio directly
1790
+ agent-launch --understand BUNDLE claude start a corpus understanding session
1791
+ agent-launch --preset balanced claude launch with a named preset
1792
+
1793
+ Shell connection is opt-in and changes only zsh startup wiring, not global
1794
+ AGENTS.md/CLAUDE.md. Restore/remove it from the TUI's Shell connection menu or
1795
+ the commands above. After restoring, open a new terminal or reload .zshrc.
1796
+
1751
1797
  Flags: --dry-run print actions without changing anything
1752
1798
  --domains a,b assemble ONLY the named domain packages (plus core+infra);
1753
1799
  with onboard, 'none' means core+infra only. The selection
@@ -1783,6 +1829,26 @@ EOF
1783
1829
  CMD="${1:-help}"
1784
1830
  if [ $# -gt 0 ]; then shift; fi
1785
1831
 
1832
+ # Private installation is the new user path. The explicit legacy flag exists only
1833
+ # while maintained install fixtures and pre-migration environments exercise the old
1834
+ # writer. No private operation falls through to a global writer.
1835
+ if [ "$CMD" = "corpus" ]; then
1836
+ exec python3 "$REPO/compose/corpus.py" --repo "$REPO" "$@" <&3
1837
+ fi
1838
+ if [ "$CMD" = "shell" ]; then
1839
+ exec python3 "$REPO/launch/shell_integration.py" "$@" <&3
1840
+ fi
1841
+ if [ "$CMD" = "understand" ]; then
1842
+ exec python3 "$REPO/compose/corpus_understand.py" --repo "$REPO" "$@" <&3
1843
+ fi
1844
+ if [ "${AGENT_BIOS_LEGACY_INSTALL:-0}" != 1 ]; then
1845
+ case "$CMD" in
1846
+ install|onboard|verify|status|uninstall|migrate|reset)
1847
+ exec python3 "$REPO/compose/corpus_install.py" --repo "$REPO" "$CMD" "$@" <&3
1848
+ ;;
1849
+ esac
1850
+ fi
1851
+
1786
1852
  # `learn` forwards its arguments and stdin straight to the collector, so it must
1787
1853
  # bypass the flag parser below (which rejects anything it does not know). This
1788
1854
  # subcommand is the only PATH-reachable entry to capture: the corpus guide used