claude-company 0.1.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.
- package/.claude/agents/architect.md +69 -0
- package/.claude/agents/auditor.md +44 -0
- package/.claude/agents/developer.md +86 -0
- package/.claude/agents/devops-engineer.md +38 -0
- package/.claude/agents/docs-librarian.md +36 -0
- package/.claude/agents/ideation-strategist.md +54 -0
- package/.claude/agents/product-manager.md +54 -0
- package/.claude/agents/qa-engineer.md +58 -0
- package/.claude/agents/security-reviewer.md +44 -0
- package/.claude/agents/tech-lead.md +80 -0
- package/.claude/hooks/_common.py +209 -0
- package/.claude/hooks/gate_stamp.py +77 -0
- package/.claude/hooks/gates_detect.py +387 -0
- package/.claude/hooks/guard_commit.py +123 -0
- package/.claude/hooks/guard_frozen.py +135 -0
- package/.claude/hooks/guard_spec.py +95 -0
- package/.claude/hooks/guard_tests.py +124 -0
- package/.claude/hooks/no_slop.py +134 -0
- package/.claude/hooks/session_start.py +63 -0
- package/.claude/hooks/stop_gate.py +59 -0
- package/.claude/settings.json +70 -0
- package/.claude/skills/autopilot/SKILL.md +65 -0
- package/.claude/skills/brainstorm/SKILL.md +61 -0
- package/.claude/skills/company-init/SKILL.md +51 -0
- package/.claude/skills/cr/SKILL.md +44 -0
- package/.claude/skills/feature/SKILL.md +42 -0
- package/.claude/skills/gates/SKILL.md +33 -0
- package/.claude/skills/onboard/SKILL.md +52 -0
- package/.claude/skills/orchestrator/SKILL.md +84 -0
- package/.claude/skills/standup/SKILL.md +38 -0
- package/.mcp.json +1 -0
- package/LICENSE +21 -0
- package/ORCHESTRATOR.md +191 -0
- package/README.md +236 -0
- package/bin/claude-company.js +112 -0
- package/company/EXTENDING.md +58 -0
- package/company/GATES.md +59 -0
- package/company/GIT.md +119 -0
- package/company/IDEATION.md +102 -0
- package/company/LOOPS.md +108 -0
- package/company/METHOD.md +151 -0
- package/company/frozen-surfaces.json +17 -0
- package/company/gates.config +5 -0
- package/company/run-gates.sh +158 -0
- package/company/state/DECISIONS.md +9 -0
- package/company/state/RESUME.md +28 -0
- package/company/state/STATUS.md +30 -0
- package/company/state/WORRIES.md +12 -0
- package/company/state/adherence.log +1 -0
- package/company/templates/BRIEF-TEMPLATE.md +69 -0
- package/company/templates/CR-TEMPLATE.md +28 -0
- package/company/templates/MODULE-TEMPLATE.md +23 -0
- package/company/templates/OPTIONS-TEMPLATE.md +42 -0
- package/company/templates/REPORT-TEMPLATE.md +35 -0
- package/company/templates/SPEC-TEMPLATE.md +69 -0
- package/docs/customizing.md +88 -0
- package/docs/getting-started.md +99 -0
- package/docs/how-it-works.md +153 -0
- package/install +4 -0
- package/install.sh +331 -0
- package/lib/install-tui.js +1600 -0
- package/package.json +47 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# RESUME / HANDOFF - read this first
|
|
2
|
+
|
|
3
|
+
_The restart point. Sessions die; work must not. The CEO updates this after
|
|
4
|
+
every spawn, merge, CR decision, and agent report. If a session died mid-flight,
|
|
5
|
+
check each worktree's git log before respawning - work may be complete on disk
|
|
6
|
+
without a report._
|
|
7
|
+
|
|
8
|
+
## 1. Program state at handoff
|
|
9
|
+
(nothing yet)
|
|
10
|
+
|
|
11
|
+
## 2. Next actions, in order
|
|
12
|
+
1. (nothing queued)
|
|
13
|
+
|
|
14
|
+
## 3. In flight
|
|
15
|
+
| Agent | Task | Worktree | Last known state |
|
|
16
|
+
|---|---|---|---|
|
|
17
|
+
| - | - | - | - |
|
|
18
|
+
|
|
19
|
+
## 4. Facts every spawn prompt needs
|
|
20
|
+
_The shared-environment cheat sheet: dev commands, ports, seed/reset behavior,
|
|
21
|
+
auth quirks, hook rules. Fill during /company-init or /onboard._
|
|
22
|
+
|
|
23
|
+
- Gate suite: `bash company/run-gates.sh`
|
|
24
|
+
- Writing must stay hook-clean: straight quotes, ' - ', three dots.
|
|
25
|
+
- (project facts here)
|
|
26
|
+
|
|
27
|
+
## 5. Done log (chronological, compressed)
|
|
28
|
+
- (empty)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# STATUS - the current-truth board
|
|
2
|
+
|
|
3
|
+
_Maintained by the CEO. Updated after every dispatch, merge, and CR decision._
|
|
4
|
+
_Red stays red until proven green. Never average a status._
|
|
5
|
+
|
|
6
|
+
_Last updated: (never) - session 0._
|
|
7
|
+
|
|
8
|
+
## Active tasks
|
|
9
|
+
|
|
10
|
+
| Task | Class | Lead/Agent | State | Gates | Notes |
|
|
11
|
+
|---|---|---|---|---|---|
|
|
12
|
+
| - | - | - | - | - | - |
|
|
13
|
+
|
|
14
|
+
## Wave position (programs only)
|
|
15
|
+
|
|
16
|
+
| Wave | Workstreams | State | Exit criteria status |
|
|
17
|
+
|---|---|---|---|
|
|
18
|
+
| - | - | - | - |
|
|
19
|
+
|
|
20
|
+
## Open CRs
|
|
21
|
+
|
|
22
|
+
_Next free CR number: CR-1._
|
|
23
|
+
|
|
24
|
+
| CR | Surface | Status | Disposition |
|
|
25
|
+
|---|---|---|---|
|
|
26
|
+
| - | - | - | - |
|
|
27
|
+
|
|
28
|
+
## Risks / decisions needed (owner-facing)
|
|
29
|
+
|
|
30
|
+
1. (none)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# WORRIES - the ledger of the un-acted-on
|
|
2
|
+
|
|
3
|
+
_Things observed but not yet run down: integration traps, flake sources, spec
|
|
4
|
+
ambiguities, anything that produced a surprise or a false-green. One row per
|
|
5
|
+
worry, brutally terse. Add a row the moment you notice it. Read this at the
|
|
6
|
+
start of every integration or audit step. A row graduates OUT when it becomes a
|
|
7
|
+
filed CR, a STATUS risk, or a verified fix - delete it then. P0 blocks a
|
|
8
|
+
wave/merge; P3 is polish._
|
|
9
|
+
|
|
10
|
+
| P | Worry | What (one line) | CEO logic (one line) |
|
|
11
|
+
|---|---|---|---|
|
|
12
|
+
| - | - | - | - |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2026-07-06T15:13:06Z | no_slop | BLOCK | tests/hooks/test_hooks.py | slop tells: 2
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# BRIEF: <task-slug>
|
|
2
|
+
|
|
3
|
+
_Type: quick | feature | program-workstream. Spec: <link or "none (quick)">.
|
|
4
|
+
Lead: <tech-lead | direct-developer>. Date: YYYY-MM-DD._
|
|
5
|
+
|
|
6
|
+
> Schema, contracts, kernel, shared UI, and anything in
|
|
7
|
+
> `company/frozen-surfaces.json` are FROZEN - consume them exactly as shipped;
|
|
8
|
+
> any change goes through `company/change-requests/`, never a local edit.
|
|
9
|
+
|
|
10
|
+
A vague brief is the main cause of a bad agent run. The agent reads this plus
|
|
11
|
+
the project's `CLAUDE.md`, nothing of the CEO's context. Make it sealed and
|
|
12
|
+
self-contained.
|
|
13
|
+
|
|
14
|
+
## Mission
|
|
15
|
+
One paragraph, in the user's terms, naming the observable outcome that means
|
|
16
|
+
success. Include the one hard constraint that must survive contact with reality.
|
|
17
|
+
|
|
18
|
+
## Read first (in order)
|
|
19
|
+
1. `CLAUDE.md` (project canon)
|
|
20
|
+
2. `company/METHOD.md` (how the team works)
|
|
21
|
+
3. <the specific module docs / source files to study - exact paths>
|
|
22
|
+
|
|
23
|
+
## You own
|
|
24
|
+
- `<dir>/` ...
|
|
25
|
+
- `<dir>/` ...
|
|
26
|
+
|
|
27
|
+
Nothing else. Anything not listed is read-only to you. If the fix you need
|
|
28
|
+
lives outside these paths, report it; do not make it.
|
|
29
|
+
|
|
30
|
+
## Invariants in play (must not break)
|
|
31
|
+
- <the specific project invariants this task brushes against>
|
|
32
|
+
|
|
33
|
+
## Frozen surfaces nearby (CR, never edit)
|
|
34
|
+
- <which frozen surfaces this task sits close to, and what to do instead>
|
|
35
|
+
|
|
36
|
+
## Scope (ordered)
|
|
37
|
+
1. <concrete step, citing FR-XX-NN>
|
|
38
|
+
2. ...
|
|
39
|
+
|
|
40
|
+
## Integration seams
|
|
41
|
+
- <adjacent module/workstream>: you guarantee <X>; you may assume <Y>.
|
|
42
|
+
- For full-stack work: land the API side first; the UI consumes the merged shape.
|
|
43
|
+
|
|
44
|
+
## Definition of Done
|
|
45
|
+
Universal DoD (every task) plus this task's specifics:
|
|
46
|
+
- [ ] Every FR in scope implemented, tested, or explicitly deferred with reason
|
|
47
|
+
- [ ] `bash company/run-gates.sh` green - run it yourself before reporting
|
|
48
|
+
- [ ] No edits outside owned directories; zero frozen surfaces patched locally
|
|
49
|
+
- [ ] UI work: screen driven live, four states captured (loaded/empty/error/after-action)
|
|
50
|
+
- [ ] Tests added for new behavior (tests are the oracle - never edited to pass)
|
|
51
|
+
- [ ] Commits follow `company/GIT.md`: conventional, `Task: <slug>` trailer,
|
|
52
|
+
explicit paths staged
|
|
53
|
+
- [ ] `MODULE.md` created/updated in each owned directory
|
|
54
|
+
- [ ] Report follows `company/templates/REPORT-TEMPLATE.md`
|
|
55
|
+
- [ ] <task-specific DoD lines>
|
|
56
|
+
|
|
57
|
+
## Fallback assumptions
|
|
58
|
+
For every ambiguity, implement THIS stated assumption and tag the site - do not
|
|
59
|
+
guess, do not ask the user:
|
|
60
|
+
- OQ-XX-01: <question> -> FALLBACK: <decision>. Tag `// OQ-XX-01 assumption`.
|
|
61
|
+
|
|
62
|
+
## Out of scope
|
|
63
|
+
Explicitly, so nobody "helpfully" expands:
|
|
64
|
+
- <thing> (owned by <other workstream / later phase>)
|
|
65
|
+
|
|
66
|
+
## Report back
|
|
67
|
+
Your report must contain, as facts: what changed (paths), gate results (paste
|
|
68
|
+
the ladder), FR checklist, ownership diff summary, screenshots (UI), CRs filed,
|
|
69
|
+
deviations from this brief and why, worries for the CEO.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# CR-<n>: <slug>
|
|
2
|
+
|
|
3
|
+
_Requesting agent/task: <who>. Date: YYYY-MM-DD._
|
|
4
|
+
_Status: PROPOSED | APPROVED | REJECTED | APPLIED_
|
|
5
|
+
|
|
6
|
+
## Frozen surface affected
|
|
7
|
+
<exact path / registry entry>
|
|
8
|
+
|
|
9
|
+
## Why (cite the requirement)
|
|
10
|
+
<FR-XX-NN / BR-XX-NN / invariant>. A CR without a concrete citation is rejected
|
|
11
|
+
by default.
|
|
12
|
+
|
|
13
|
+
## Exact proposed change
|
|
14
|
+
The precise diff or addition. No "something like".
|
|
15
|
+
|
|
16
|
+
## Blast radius
|
|
17
|
+
Every module/workstream that reads or writes this surface; which agents must
|
|
18
|
+
rebase; which gates re-run.
|
|
19
|
+
|
|
20
|
+
## Owner sign-off needed?
|
|
21
|
+
yes/no - yes when the surface is on the owner-escalation list (money,
|
|
22
|
+
invariants, determinism/versioning, prod schema).
|
|
23
|
+
|
|
24
|
+
## Workaround if rejected
|
|
25
|
+
How the requesting task proceeds without this change.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
_CEO decision and remarks:_
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# MODULE: <name>
|
|
2
|
+
|
|
3
|
+
_One page max. Copy into every directory you own, fill in BEFORE coding, keep
|
|
4
|
+
current. An agent landing here must be one file away from full context._
|
|
5
|
+
|
|
6
|
+
| What | Where |
|
|
7
|
+
|---|---|
|
|
8
|
+
| Spec | `company/specs/<spec>.md` |
|
|
9
|
+
| Brief | `company/briefs/brief-<slug>.md` |
|
|
10
|
+
| Contracts | <path to the contracts this module consumes/registers> |
|
|
11
|
+
| Owned routes/surfaces | <routes, jobs, exports> |
|
|
12
|
+
| Registrations | <manifest entries, guard keys, widgets this module registers> |
|
|
13
|
+
|
|
14
|
+
## What lives here
|
|
15
|
+
- <2-5 bullets>
|
|
16
|
+
|
|
17
|
+
## Seams
|
|
18
|
+
- Upstream: <what this module assumes from others>
|
|
19
|
+
- Downstream: <what others may assume from this module>
|
|
20
|
+
|
|
21
|
+
## Changelog notes
|
|
22
|
+
- YYYY-MM-DD <one line per out-of-band fix someone else made here, so the
|
|
23
|
+
owning agent is not surprised next session>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# OPTIONS MEMO: <topic>
|
|
2
|
+
|
|
3
|
+
_Engagement: <slug>. Author: <role(s)>. Date: YYYY-MM-DD._
|
|
4
|
+
_Patterns used: <categories from company/IDEATION.md>._
|
|
5
|
+
|
|
6
|
+
Client-facing. One screen if possible. The client reads this to see the
|
|
7
|
+
option space and the reasoning - never to do process work.
|
|
8
|
+
|
|
9
|
+
## The question
|
|
10
|
+
One sentence: what we are deciding.
|
|
11
|
+
|
|
12
|
+
## Options
|
|
13
|
+
|
|
14
|
+
| # | Option | Reasoning (why it could win) | Production risks | Trade-offs |
|
|
15
|
+
|---|---|---|---|---|
|
|
16
|
+
| 1 | ... | ... | ... | ... |
|
|
17
|
+
| 2 | ... | ... | ... | ... |
|
|
18
|
+
| 3 | ... | ... | ... | ... |
|
|
19
|
+
|
|
20
|
+
(Full divergence - the 8-15 raw directions - lives in the appendix or the
|
|
21
|
+
linked working doc, not here. The memo carries the survivors.)
|
|
22
|
+
|
|
23
|
+
## Scoring
|
|
24
|
+
|
|
25
|
+
Criteria (weighted where it matters): client value, production risk, cost to
|
|
26
|
+
build, cost to operate, reversibility.
|
|
27
|
+
|
|
28
|
+
| # | Value | Prod risk | Build cost | Op cost | Reversible | Verdict |
|
|
29
|
+
|---|---|---|---|---|---|---|
|
|
30
|
+
|
|
31
|
+
## Recommendation
|
|
32
|
+
|
|
33
|
+
**Option <n>: <name>.** <2-4 sentences: why it wins, what it costs, the one
|
|
34
|
+
risk we will watch.>
|
|
35
|
+
|
|
36
|
+
**Strongest rejected option:** #<m> - <one sentence on why it lost>. If this
|
|
37
|
+
option keeps winning arguments during the build, we reopen this memo.
|
|
38
|
+
|
|
39
|
+
**Decisions that are yours:** <owner-escalation items surfaced by the
|
|
40
|
+
divergence, if any - money, business policy. Otherwise "none".>
|
|
41
|
+
|
|
42
|
+
> Proceeding on Option <n> unless you object. No action needed to approve.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# REPORT: <task-slug>
|
|
2
|
+
|
|
3
|
+
_Agent: <role>. Brief: `company/briefs/brief-<slug>.md`. Date: YYYY-MM-DD._
|
|
4
|
+
|
|
5
|
+
Reports contain facts, not adjectives. "Robust" and "comprehensive" are not
|
|
6
|
+
facts. Never describe unverified work as working.
|
|
7
|
+
|
|
8
|
+
## What changed
|
|
9
|
+
- <path>: <one line>
|
|
10
|
+
|
|
11
|
+
## Gate results (paste the ladder, do not summarize)
|
|
12
|
+
```
|
|
13
|
+
<output of bash company/run-gates.sh>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## FR checklist
|
|
17
|
+
- FR-XX-01: implemented + tested (<test path>) | deferred because <reason>
|
|
18
|
+
|
|
19
|
+
## Ownership
|
|
20
|
+
`git diff --stat <base>..HEAD` summary. Confirm: no paths outside the brief's
|
|
21
|
+
"You own" list. If any, say so plainly.
|
|
22
|
+
|
|
23
|
+
## Evidence (UI tasks)
|
|
24
|
+
Screenshots: loaded / empty / error / after-action. Paths or embeds. You
|
|
25
|
+
capture; the lead and CEO judge.
|
|
26
|
+
|
|
27
|
+
## CRs filed
|
|
28
|
+
- CR-<n>: <slug> - status
|
|
29
|
+
|
|
30
|
+
## Deviations from the brief
|
|
31
|
+
What and why. An empty section means "none", written explicitly.
|
|
32
|
+
|
|
33
|
+
## Worries for the CEO
|
|
34
|
+
Suspicions, near-misses, false-green risks - anything that belongs in
|
|
35
|
+
`company/state/WORRIES.md`.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# SPEC: <feature name>
|
|
2
|
+
|
|
3
|
+
_Type: feature | program-module. Author: product-manager. Date: YYYY-MM-DD._
|
|
4
|
+
_Status: DRAFT | SPEC-READY | SHIPPED (move to company/specs/shipped/ when shipped)._
|
|
5
|
+
|
|
6
|
+
The spec is rich and human-facing; it can be long. The builder agent NEVER
|
|
7
|
+
reads it - it reads the brief derived from it. Reference, do not embed.
|
|
8
|
+
|
|
9
|
+
## Part 1 - Product requirements
|
|
10
|
+
|
|
11
|
+
### Problem
|
|
12
|
+
What hurts, for whom, and what it costs today. No solutions here.
|
|
13
|
+
|
|
14
|
+
### Goal and success metrics
|
|
15
|
+
The observable outcome that means this worked. Binary where possible.
|
|
16
|
+
|
|
17
|
+
### Users and personas
|
|
18
|
+
Who touches this, with their permissions posture.
|
|
19
|
+
|
|
20
|
+
### User stories and acceptance criteria
|
|
21
|
+
US-XX-1: As a <persona>, I can <action>, so that <value>.
|
|
22
|
+
- AC: given/when/then, concrete enough to test.
|
|
23
|
+
|
|
24
|
+
### Functional requirements
|
|
25
|
+
Stable IDs. Every FR is later implemented, tested, or explicitly deferred - the
|
|
26
|
+
traceability gate checks these IDs against the PR.
|
|
27
|
+
|
|
28
|
+
- FR-XX-01: ...
|
|
29
|
+
- FR-XX-02: ...
|
|
30
|
+
|
|
31
|
+
### Business rules and validations
|
|
32
|
+
- BR-XX-01: ... (server-side; client mirrors are UX only)
|
|
33
|
+
|
|
34
|
+
### Scope
|
|
35
|
+
**In:** ...
|
|
36
|
+
**Out:** ... (be explicit - out-of-scope lines prevent helpful expansion)
|
|
37
|
+
|
|
38
|
+
### UX notes
|
|
39
|
+
Flows, states (loading/empty/error/ready), microcopy intent.
|
|
40
|
+
|
|
41
|
+
## Part 2 - Build readiness (the bridge from PRD to buildable)
|
|
42
|
+
|
|
43
|
+
If a line below cannot be filled, the spec is not ready. That is the point of
|
|
44
|
+
Phase 0: caught before any build tokens are spent.
|
|
45
|
+
|
|
46
|
+
- **Owned directories:** which dirs the build will create/modify, per workstream.
|
|
47
|
+
- **Invariants in play:** which project invariants this touches.
|
|
48
|
+
- **Frozen surfaces touched:** which, and the CR(s) needed before build.
|
|
49
|
+
- **Data model impact:** tables/columns/migrations, forward-only.
|
|
50
|
+
- **Contracts impact:** new enums/DTOs/transitions (additive? breaking?).
|
|
51
|
+
- **Open questions and chosen fallbacks:**
|
|
52
|
+
- OQ-XX-01: <question>. FALLBACK: <the single decided default every agent
|
|
53
|
+
implements, tagged `// OQ-XX-01 assumption` in code>. Owner answers later.
|
|
54
|
+
- **Verification plan:** how each FR will be proven (test, e2e slice, screenshot).
|
|
55
|
+
|
|
56
|
+
## Spec-ready checklist (the Phase 0 gate)
|
|
57
|
+
|
|
58
|
+
- [ ] Every FR has a stable ID and at least one acceptance criterion
|
|
59
|
+
- [ ] Out-of-scope is explicit
|
|
60
|
+
- [ ] Every open question has a single decided fallback
|
|
61
|
+
- [ ] Owned directories are named and disjoint from other in-flight work
|
|
62
|
+
- [ ] Frozen-surface needs are identified and CRs filed
|
|
63
|
+
- [ ] Data/contract impact stated (or "none")
|
|
64
|
+
- [ ] Verification plan covers every FR
|
|
65
|
+
|
|
66
|
+
## Part 3 - Brief handoff
|
|
67
|
+
|
|
68
|
+
Derive the brief(s) with `company/templates/BRIEF-TEMPLATE.md`. The brief links
|
|
69
|
+
this spec; it does not embed it.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Customizing
|
|
2
|
+
|
|
3
|
+
Everything the company runs on is a plain file in your repo. This guide covers the changes people make most: gates, protected files, process depth, and the team itself. Edit, commit, done; no rebuild step exists.
|
|
4
|
+
|
|
5
|
+
| I want to... | Edit | Section |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| Add or change a test gate | `company/gates.config` | [Gates](#add-or-change-gates) |
|
|
8
|
+
| Protect a file from agent edits | `company/frozen-surfaces.json` | [Protect a file](#protect-freeze-a-file) |
|
|
9
|
+
| Give a request more or less process | say it, or `company/METHOD.md` | [Tune process](#tune-how-much-process-a-request-gets) |
|
|
10
|
+
| Change a role's instructions or model | `.claude/agents/<role>.md` | [Change the team](#change-the-team) |
|
|
11
|
+
| Undo a founding default | `company/frozen-surfaces.json`, `CLAUDE.md` | [Founding defaults](#adjust-the-founding-defaults) |
|
|
12
|
+
| Change the enforcement itself | `.claude/hooks/` | [Enforcement](#change-the-enforcement-itself) |
|
|
13
|
+
|
|
14
|
+
## Add or change gates
|
|
15
|
+
|
|
16
|
+
Gates live in `company/gates.config`:
|
|
17
|
+
|
|
18
|
+
```json
|
|
19
|
+
{
|
|
20
|
+
"gates": [
|
|
21
|
+
{ "name": "lint", "command": "npm run lint", "blocking": true },
|
|
22
|
+
{ "name": "tests", "command": "npm test", "blocking": true }
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Rules that keep the ladder useful:
|
|
28
|
+
|
|
29
|
+
- Order cheap to expensive (lint before tests before build) so failures surface fast
|
|
30
|
+
- Every command must exit non-zero on failure, or the gate cannot block anything
|
|
31
|
+
- Add gates you intend to keep. There is no non-blocking mode, because a warnable gate becomes a skippable gate
|
|
32
|
+
|
|
33
|
+
To rebuild the config from your project automatically, run:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
python3 .claude/hooks/gates_detect.py --write
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
It detects package scripts, pytest, Go, Cargo, and Makefiles, and only replaces placeholder entries; gates you wrote by hand are kept.
|
|
40
|
+
|
|
41
|
+
## Protect (freeze) a file
|
|
42
|
+
|
|
43
|
+
Add an entry to `company/frozen-surfaces.json`:
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"surfaces": [
|
|
48
|
+
{ "pattern": "src/db/schema.*", "why": "single source of truth for data shapes", "change_via": "CR" }
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Patterns match against the file path and its basename. From then on, every agent edit to a matching file is blocked, and the block message points the agent to the change-request process. Good candidates: schemas, shipped migrations, payment code, generated files, and anything with exactly one legitimate writer.
|
|
54
|
+
|
|
55
|
+
`.env` files, lockfiles, and the gate stamp are protected out of the box.
|
|
56
|
+
|
|
57
|
+
## Tune how much process a request gets
|
|
58
|
+
|
|
59
|
+
The CEO sizes each request automatically: `ideation`, `quick`, `feature`, `program`, or `hotfix`. The sizing rules live in `company/METHOD.md` under "Ceremony scales with the task". Two useful overrides:
|
|
60
|
+
|
|
61
|
+
- Say the class in your request ("treat this as a quick fix") and the CEO will honor it
|
|
62
|
+
- For a production fire, say hotfix. Hooks log instead of block, and the process catches up afterward
|
|
63
|
+
|
|
64
|
+
If features in your project keep getting more ceremony than they deserve, edit the class table in `METHOD.md`; it is canon, and the agents follow it.
|
|
65
|
+
|
|
66
|
+
## Change the team
|
|
67
|
+
|
|
68
|
+
Each role is one markdown file in `.claude/agents/`. The file's frontmatter sets the model and tool access; the body is the role's standing instructions.
|
|
69
|
+
|
|
70
|
+
- **Adjust a role**: edit its file. Keep instructions short and explain why a rule exists; agents follow reasons better than bare orders.
|
|
71
|
+
- **Add a role**: copy the closest existing file, rename it, and describe when it should be used in the `description` field. The CEO dispatches based on that description.
|
|
72
|
+
- **Change models**: every agent ships with `model: opus`. Your main session (the CEO) uses whatever model you run Claude Code with.
|
|
73
|
+
|
|
74
|
+
Two roles are load-bearing; change them carefully. `tech-lead` is the only agent allowed to spawn other agents, and `developer` carries the working rules every builder inherits.
|
|
75
|
+
|
|
76
|
+
## Adjust the founding defaults
|
|
77
|
+
|
|
78
|
+
During self-onboarding the company freezes migration and schema files, wires detected gates, and records its choices for your veto. If it froze something you need fluid, remove the entry from `frozen-surfaces.json`. If it missed a convention your team cares about, add it to your project's `CLAUDE.md`; every agent reads that file first.
|
|
79
|
+
|
|
80
|
+
## Change the enforcement itself
|
|
81
|
+
|
|
82
|
+
The hooks are readable Python in `.claude/hooks/`, wired in `.claude/settings.json`, with tests in `tests/hooks/`. If you change a hook, run the suite:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
bash tests/hooks/run_tests.sh
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
One caution: the hooks are the part of the system that keeps the rest honest. Weakening them quietly turns every other promise in this repo back into hope.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Getting started
|
|
2
|
+
|
|
3
|
+
This guide takes you from install to your first delivered feature. It works for a brand-new project or a codebase you already have. Allow ten minutes, most of it watching the company work.
|
|
4
|
+
|
|
5
|
+
## Before you start
|
|
6
|
+
|
|
7
|
+
| You need | Used for |
|
|
8
|
+
|---|---|
|
|
9
|
+
| Claude Code v2.1.172+ | Nested agents (tech leads run their own teams) |
|
|
10
|
+
| Python 3.8+ and git | The enforcement hooks |
|
|
11
|
+
| Node.js with `npx` | Browser testing with screenshots (optional but recommended) |
|
|
12
|
+
|
|
13
|
+
## Step 1: install
|
|
14
|
+
|
|
15
|
+
Install the CLI once, then install the company into your project:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install -g claude-company
|
|
19
|
+
claude-company install /path/to/your/project
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
`npx claude-company install .` does the same without a global install. If you prefer no npm at all, clone the repo and run `./claude-company/install /path/to/your/project` directly - same installer either way. Add `--yes` for a non-interactive run (CI, scripts).
|
|
23
|
+
|
|
24
|
+
The installer copies the team, the rules, and the process files into your project. It merges with what you already have: your existing Claude settings, MCP servers, and `CLAUDE.md` are extended, never replaced. Run it again after an update and it refreshes claude-company's own files while leaving your state alone.
|
|
25
|
+
|
|
26
|
+
After it finishes, your project has three new things:
|
|
27
|
+
|
|
28
|
+
| Path | What it is |
|
|
29
|
+
|---|---|
|
|
30
|
+
| `.claude/` | The agent team, the commands, and the enforcement hooks |
|
|
31
|
+
| `company/` | The process documents, templates, and state files |
|
|
32
|
+
| `ORCHESTRATOR.md` | The CEO's private runbook |
|
|
33
|
+
|
|
34
|
+
## Step 2: start the company
|
|
35
|
+
|
|
36
|
+
Open your project in Claude Code and give the orchestrator your first request:
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
/orchestrator build me a REST API for tracking workouts, with user accounts
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
You do not need to initialize anything first. The company notices it is new here and onboards itself:
|
|
43
|
+
|
|
44
|
+
```mermaid
|
|
45
|
+
flowchart LR
|
|
46
|
+
A([first /orchestrator run]) --> B{company files<br>present?}
|
|
47
|
+
B -->|yes| E[resume from state files]
|
|
48
|
+
B -->|no| C[study the codebase<br>or found a new one<br>from your request]
|
|
49
|
+
C --> D[auto-detect test and lint<br>commands as gates<br>+ protect key files]
|
|
50
|
+
D --> E
|
|
51
|
+
E --> F([run your request])
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
You can watch this happen; it reports what it found and what it wired.
|
|
55
|
+
|
|
56
|
+
## Step 3: watch the pipeline
|
|
57
|
+
|
|
58
|
+
For a feature-sized request, expect this sequence:
|
|
59
|
+
|
|
60
|
+
1. The CEO sizes the request and dispatches the product manager.
|
|
61
|
+
2. The product manager explores 8 to 15 directions, then writes a spec with numbered, testable requirements. The spec records which options it considered and why the winner won.
|
|
62
|
+
3. The CEO turns the spec into sealed work orders and spawns a tech lead.
|
|
63
|
+
4. The tech lead runs its own team: developers building in parallel, then a QA engineer that clicks through the running app and captures screenshots of the loaded, empty, error, and after-action states.
|
|
64
|
+
5. The CEO reruns the gates itself, checks the diffs stayed inside their assignments, reads the screenshots, merges, and reports to you.
|
|
65
|
+
|
|
66
|
+
Small requests skip most of this. A typo fix gets one developer and the gates, nothing more.
|
|
67
|
+
|
|
68
|
+
## Step 4: read the delivery report
|
|
69
|
+
|
|
70
|
+
The company interrupts you for two things only:
|
|
71
|
+
|
|
72
|
+
| Interruption | What you get |
|
|
73
|
+
|---|---|
|
|
74
|
+
| Delivery | What shipped, the evidence (green gates, screenshots), what is next |
|
|
75
|
+
| Your decisions | Anything involving money, deploys, or business policy, batched in `company/state/DECISIONS.md` |
|
|
76
|
+
|
|
77
|
+
To check on things at any time:
|
|
78
|
+
|
|
79
|
+
```text
|
|
80
|
+
/standup
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
You get one screen: done, in flight, blocked, decisions you owe, and current gate status.
|
|
84
|
+
|
|
85
|
+
## When something gets blocked
|
|
86
|
+
|
|
87
|
+
Sooner or later you will see a message like this:
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
BLOCKED: git commit requires green, fresh gates.
|
|
91
|
+
Fix: run `bash company/run-gates.sh` and repair any failure.
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
This is the system working. The block message contains the fix, agents get the same messages, and most blocks resolve without you. For a production emergency, tell the orchestrator it is a hotfix: hooks then log instead of block, and the process catches up afterward.
|
|
95
|
+
|
|
96
|
+
## Where to go next
|
|
97
|
+
|
|
98
|
+
- [How it works](how-it-works.md) explains the method: why briefs are sealed, why producers never grade their own work, and what the gates actually check
|
|
99
|
+
- [Customizing](customizing.md) covers adding gates, protecting files, and tuning process depth
|