tillerhand 3.43.0 → 3.47.1
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/board-chair.md +20 -20
- package/.claude/agents/code-reviewer.md +20 -20
- package/.claude/agents/council-advisor.md +14 -14
- package/.claude/agents/security-auditor.md +30 -30
- package/.claude/agents/test-writer.md +22 -22
- package/.claude/board/board-ai.md +25 -25
- package/.claude/board/board-api.md +25 -25
- package/.claude/board/board-architect.md +28 -28
- package/.claude/board/board-devops.md +25 -25
- package/.claude/board/board-mobile.md +25 -25
- package/.claude/board/board-performance.md +24 -24
- package/.claude/board/board-privacy.md +25 -25
- package/.claude/board/board-product.md +26 -26
- package/.claude/board/board-qa.md +28 -28
- package/.claude/board/board-ux.md +26 -26
- package/.claude/board/council.md +76 -76
- package/.claude/board/rules.md +61 -61
- package/.claude/claude-security-guidance.md +10 -10
- package/.claude/commands/adopt.md +70 -69
- package/.claude/commands/ask-mode.md +9 -9
- package/.claude/commands/board.md +15 -15
- package/.claude/commands/build.md +47 -47
- package/.claude/commands/dashboard.md +17 -17
- package/.claude/commands/design.md +31 -31
- package/.claude/commands/findings-all.md +14 -14
- package/.claude/commands/findings-business.md +7 -7
- package/.claude/commands/findings-legal.md +7 -7
- package/.claude/commands/findings-perf.md +7 -7
- package/.claude/commands/findings-security.md +9 -9
- package/.claude/commands/findings-tech.md +7 -7
- package/.claude/commands/findings-ux.md +7 -7
- package/.claude/commands/fix-bug.md +15 -15
- package/.claude/commands/freeze.md +8 -8
- package/.claude/commands/handoff.md +38 -38
- package/.claude/commands/kit-update.md +17 -14
- package/.claude/commands/language.md +13 -0
- package/.claude/commands/maintain.md +19 -19
- package/.claude/commands/plan-task.md +32 -32
- package/.claude/commands/qa.md +17 -17
- package/.claude/commands/release.md +40 -40
- package/.claude/commands/research.md +31 -31
- package/.claude/commands/retro.md +32 -32
- package/.claude/commands/review-changes.md +15 -15
- package/.claude/commands/rollback.md +24 -24
- package/.claude/commands/start.md +116 -113
- package/.claude/commands/tools.md +11 -11
- package/.claude/commands/user-feedback.md +11 -11
- package/.claude/commands/wrap-up.md +18 -18
- package/.claude/findings/lenses/business.md +24 -24
- package/.claude/findings/lenses/legal.md +29 -29
- package/.claude/findings/lenses/perf.md +19 -19
- package/.claude/findings/lenses/security.md +30 -30
- package/.claude/findings/lenses/tech.md +23 -23
- package/.claude/findings/lenses/ux.md +19 -19
- package/.claude/findings/protocol.md +54 -54
- package/.claude/findings/report-template.md +30 -30
- package/.claude/hooks/budget.mjs +7 -7
- package/.claude/hooks/checkpoint.mjs +12 -12
- package/.claude/hooks/commit-gate.mjs +38 -37
- package/.claude/hooks/cost.mjs +2 -2
- package/.claude/hooks/council.mjs +3 -3
- package/.claude/hooks/dashboard-data.mjs +4 -3
- package/.claude/hooks/dashboard.mjs +164 -149
- package/.claude/hooks/destructive-guard.mjs +74 -64
- package/.claude/hooks/edit-rounds.mjs +3 -3
- package/.claude/hooks/flow.mjs +10 -10
- package/.claude/hooks/freeze-guard.mjs +27 -23
- package/.claude/hooks/gate.mjs +25 -25
- package/.claude/hooks/guard-secrets.mjs +11 -11
- package/.claude/hooks/lang.mjs +114 -0
- package/.claude/hooks/messages.mjs +495 -0
- package/.claude/hooks/models.mjs +14 -11
- package/.claude/hooks/notify.mjs +3 -2
- package/.claude/hooks/package-gate.mjs +17 -15
- package/.claude/hooks/plugins-sync.mjs +9 -9
- package/.claude/hooks/prefs.mjs +19 -19
- package/.claude/hooks/preview.mjs +11 -11
- package/.claude/hooks/progress.mjs +14 -14
- package/.claude/hooks/qa-report.mjs +11 -10
- package/.claude/hooks/reminder.mjs +6 -3
- package/.claude/hooks/session-start.mjs +23 -17
- package/.claude/hooks/shared.mjs +1 -1
- package/.claude/hooks/status-read.mjs +5 -4
- package/.claude/hooks/statusline.mjs +14 -11
- package/.claude/hooks/structure-guard.mjs +9 -9
- package/.claude/hooks/test-guard.mjs +12 -12
- package/.claude/hooks/tools.mjs +28 -29
- package/.claude/hooks/usage.mjs +18 -15
- package/.claude/output-styles/anlatici.md +28 -28
- package/.claude/security-patterns.json +3 -3
- package/.claude/settings.json +2 -0
- package/.claude/skills/logo-design/SKILL.md +42 -42
- package/.claude/skills/motion-video/SKILL.md +52 -52
- package/.claude/skills/source-research/SKILL.md +35 -35
- package/.claude/skills/ui-motion/SKILL.md +38 -38
- package/.github/workflows/kit-tests.yml +7 -7
- package/.github/workflows/npm-publish.yml +16 -16
- package/AGENTS.md +56 -56
- package/CHANGELOG.md +7 -7
- package/CLAUDE.md +5 -5
- package/README.md +199 -172
- package/README.tr.md +292 -0
- package/docs/architecture/overview.md +31 -31
- package/docs/architecture/stack.md +2 -2
- package/docs/archive/README.md +4 -4
- package/docs/decisions/adr-template.md +14 -14
- package/docs/decisions/log.md +10 -10
- package/docs/findings/README.md +13 -13
- package/docs/findings/config.md +13 -13
- package/docs/legal/privacy-kvkk.md +1 -1
- package/docs/operations/accounts.md +25 -25
- package/docs/operations/deploy-setup.md +64 -64
- package/docs/operations/feature-flags.md +17 -17
- package/docs/operations/maintenance.md +48 -48
- package/docs/operations/release-checklist.md +61 -61
- package/docs/operations/spend-alarms.md +28 -28
- package/docs/product/feedback.md +9 -8
- package/docs/product/glossary.md +16 -16
- package/docs/product/launch.md +28 -28
- package/docs/product/prd.md +43 -42
- package/docs/product/roadmap.md +31 -30
- package/docs/product/specs/_template.md +13 -12
- package/docs/product/unit-economics.md +23 -22
- package/docs/quality/metrics.md +14 -14
- package/docs/quality/retros.md +11 -11
- package/docs/quality/test-plan.md +48 -48
- package/docs/security/checklist.md +57 -57
- package/docs/workflow/board.md +7 -7
- package/docs/workflow/cost-log.md +4 -4
- package/docs/workflow/decision-protocol.md +70 -70
- package/docs/workflow/learning.md +4 -4
- package/docs/workflow/mcp-catalog.md +31 -31
- package/docs/workflow/models.md +35 -35
- package/docs/workflow/progress.md +7 -7
- package/docs/workflow/skills.md +108 -108
- package/docs/workflow/usage-limits.md +62 -62
- package/kit/CHANGELOG.md +882 -841
- package/kit/VERSION +1 -1
- package/kit/guide.html +713 -477
- package/kit/guide.tr.html +1328 -0
- package/kit/kit.mjs +56 -54
- package/kit/project/README.md +29 -29
- package/kit/project/gitignore +12 -12
- package/kit/templates/addons/ai/.env.example.append +5 -5
- package/kit/templates/addons/ai/ai/evals/README.md +11 -11
- package/kit/templates/addons/ai/ai/evals/cases.jsonl +2 -2
- package/kit/templates/addons/ai/ai/prompts/README.md +8 -8
- package/kit/templates/addons/ai/docs/ai/guide.md +56 -56
- package/kit/templates/backend/.claude/hooks/format.mjs +1 -1
- package/kit/templates/backend/.claude/structure.json +1 -1
- package/kit/templates/backend/.env.example +6 -6
- package/kit/templates/backend/.github/dependabot.yml +1 -1
- package/kit/templates/backend/.github/workflows/ci.yml +13 -13
- package/kit/templates/backend/.github/workflows/claude-ci-fix.yml +19 -19
- package/kit/templates/backend/.github/workflows/claude-maintenance.yml +18 -18
- package/kit/templates/backend/.github/workflows/live-monitoring.yml +14 -14
- package/kit/templates/backend/.pre-commit-config.yaml +3 -3
- package/kit/templates/backend/docs/architecture/stack.md +98 -98
- package/kit/templates/backend/docs/architecture/structure.md +34 -34
- package/kit/templates/mobile/.claude/structure.json +1 -1
- package/kit/templates/mobile/.env.example +6 -6
- package/kit/templates/mobile/.github/dependabot.yml +2 -2
- package/kit/templates/mobile/.github/workflows/ci.yml +18 -18
- package/kit/templates/mobile/.github/workflows/claude-ci-fix.yml +19 -19
- package/kit/templates/mobile/.github/workflows/claude-maintenance.yml +18 -18
- package/kit/templates/mobile/.gitignore.append +2 -2
- package/kit/templates/mobile/docs/architecture/stack.md +113 -113
- package/kit/templates/mobile/docs/architecture/structure.md +33 -33
- package/kit/templates/mobile/docs/design/design-guide.md +37 -37
- package/kit/templates/mobile/tests/security/rls.mjs +22 -22
- package/kit/templates/web-saas/.claude/structure.json +1 -1
- package/kit/templates/web-saas/.env.example +11 -11
- package/kit/templates/web-saas/.github/dependabot.yml +3 -3
- package/kit/templates/web-saas/.github/workflows/ci.yml +20 -20
- package/kit/templates/web-saas/.github/workflows/claude-ci-fix.yml +19 -19
- package/kit/templates/web-saas/.github/workflows/claude-maintenance.yml +18 -18
- package/kit/templates/web-saas/.github/workflows/live-monitoring.yml +12 -12
- package/kit/templates/web-saas/docs/architecture/stack.md +116 -116
- package/kit/templates/web-saas/docs/architecture/structure.md +44 -44
- package/kit/templates/web-saas/docs/design/design-guide.md +38 -38
- package/kit/templates/web-saas/tests/live/smoke.spec.ts +4 -4
- package/kit/templates/web-saas/tests/security/rls.mjs +22 -22
- package/kit/tools/codex/.codex/hooks.json +1 -1
- package/package.json +2 -2
- package/README.en.md +0 -267
package/README.md
CHANGED
|
@@ -1,265 +1,292 @@
|
|
|
1
1
|
<p align="center">
|
|
2
2
|
<picture>
|
|
3
3
|
<source media="(prefers-color-scheme: dark)" srcset="kit/assets/banner-dark.svg">
|
|
4
|
-
<img src="kit/assets/banner-light.svg" alt="TillerHand:
|
|
4
|
+
<img src="kit/assets/banner-light.svg" alt="TillerHand: AI builds. You steer." width="100%">
|
|
5
5
|
</picture>
|
|
6
6
|
</p>
|
|
7
7
|
|
|
8
8
|
<p align="center">
|
|
9
|
-
<a href="kit/CHANGELOG.md"><img alt="
|
|
10
|
-
<a href="LICENSE"><img alt="
|
|
11
|
-
<img alt="Claude Code" src="https://img.shields.io/badge/Claude%20Code-
|
|
12
|
-
<img alt="Codex
|
|
9
|
+
<a href="kit/CHANGELOG.md"><img alt="Version" src="https://img.shields.io/badge/version-3.47.1-2a78d6?style=flat-square"></a>
|
|
10
|
+
<a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/license-MIT-2a78d6?style=flat-square"></a>
|
|
11
|
+
<img alt="Claude Code" src="https://img.shields.io/badge/Claude%20Code-ready-d97757?style=flat-square">
|
|
12
|
+
<img alt="Also Codex and Antigravity" src="https://img.shields.io/badge/also-Codex%20%C2%B7%20Antigravity-5b6577?style=flat-square">
|
|
13
13
|
<img alt="Node.js 18+" src="https://img.shields.io/badge/Node.js-18%2B-3c873a?style=flat-square">
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
16
|
<p align="center">
|
|
17
|
-
<b>
|
|
17
|
+
<b>English</b> · <a href="README.tr.md">Türkçe</a> · <a href="https://burakdogrul.github.io/TillerHand/kit/guide.html"><b>Read the guide →</b></a>
|
|
18
18
|
</p>
|
|
19
19
|
|
|
20
20
|
<p align="center">
|
|
21
|
-
<a href="#
|
|
22
|
-
<a href="#
|
|
23
|
-
<a href="#
|
|
24
|
-
<a href="#
|
|
25
|
-
<a href="#
|
|
26
|
-
<a href="#
|
|
27
|
-
<a href="#
|
|
21
|
+
<a href="#step-by-step-for-beginners">Step by step</a> ·
|
|
22
|
+
<a href="#quick-start">Quick start</a> ·
|
|
23
|
+
<a href="#existing-project-adopt">/adopt</a> ·
|
|
24
|
+
<a href="#how-it-works">How it works</a> ·
|
|
25
|
+
<a href="#expert-board">Board</a> ·
|
|
26
|
+
<a href="#guardrails">Guardrails</a> ·
|
|
27
|
+
<a href="#commands">Commands</a> ·
|
|
28
|
+
<a href="#license">License</a>
|
|
28
29
|
</p>
|
|
29
30
|
|
|
30
31
|
---
|
|
31
32
|
|
|
32
|
-
**TillerHand
|
|
33
|
+
**TillerHand** is a starter kit that takes a product from idea to production and maintenance with [Claude Code](https://claude.com/claude-code). The AI writes the code; **you make the decisions**. At every important step it lays out the options, when each one is the better choice, and what it recommends. An **expert board** reviews the work, **guardrails** stop dangerous actions before they happen, and the project always stays in a **clean folder structure**.
|
|
34
|
+
|
|
35
|
+
> **Language first.** `/start` and `/adopt` open with one question: which language should the AI talk to you in? Turkish, English or any other. From then on questions, answers, reports, the dashboard and the status line come in that language; `/language` changes it later. Everything the kit ships (commands, rules, agents, hooks, document templates) is written in English; only the optional Turkey add-on stays Turkish.
|
|
33
36
|
|
|
34
37
|
| | |
|
|
35
38
|
|---|---|
|
|
36
|
-
| **
|
|
37
|
-
| **
|
|
38
|
-
|
|
|
39
|
-
| **
|
|
40
|
-
| **
|
|
41
|
-
| **
|
|
42
|
-
| **
|
|
43
|
-
| **
|
|
44
|
-
| **
|
|
45
|
-
| **
|
|
46
|
-
| **
|
|
47
|
-
| **
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
**
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
39
|
+
| **Question-driven** | Product, technical, design, data, security and cost decisions come as reasoned options. Design questions come with visual previews. |
|
|
40
|
+
| **In your language** | The first question is the language. Questions, answers, documents, the dashboard and the status line then come in that language; `/language` changes it. |
|
|
41
|
+
| **Expert board** | Product, Architect, Security, UX, Privacy, QA and other members review the plan, each task, each commit and each phase. |
|
|
42
|
+
| **A separate agent writes the tests** | Acceptance and adversarial tests are written before the code by a separate agent, not the one writing the code, and they start red. The coder can't touch test files, and a test changed by indirect means can't get into a commit. Nothing is called done without proof that it works. |
|
|
43
|
+
| **Specs and drift checks** | Larger tasks and every bug get a spec of current, expected and must-not-change behavior; if a must-not-change behavior has no test, the gate is red. |
|
|
44
|
+
| **Findings reports** | The top 20 findings for tech, business, security, UX, performance and legal; scored, with how to fix them. |
|
|
45
|
+
| **Guardrails** | Secrets, destructive commands, unapproved prod deploys, weakened tests and stray files are stopped before they happen. |
|
|
46
|
+
| **Live preview** | For UI tasks the dev server is started and desktop and mobile screenshots are taken; `/qa` runs the acceptance criteria in a real browser. |
|
|
47
|
+
| **Launch and after** | `/release first` walks you through hosting, domain, backups and rollback, provider by provider. Web and backend projects get a smoke test against the live site every 3 hours. |
|
|
48
|
+
| **Turkey add-on** | Optional. Signature checks for iyzico and PayTR notifications come with an adversarial test; the KVKK cross-border transfer, e-Invoice/e-Archive and Turkish İ/ı items each link to a primary source. |
|
|
49
|
+
| **Dashboard** | `dashboard.html`: status, what needs attention, decisions, board, findings, quality, operations, usage; commands copy with one click. |
|
|
50
|
+
| **Usage-aware** | Reads the 5-hour and weekly limits and plans work around them. It warns; it never stops the work. |
|
|
51
|
+
| **Sourced facts** | Anything that changes (versions, prices, regulations) is checked against a primary source, with link and date. |
|
|
52
|
+
| **Rollback** | `/rollback` returns to the last working state; history is kept, unfinished work is saved. |
|
|
53
|
+
| **Narrator mode** | Optionally explains every change in plain language, as if to someone who doesn't code. |
|
|
54
|
+
| **Learns how you work** | Picks up how you like to work (tone, questions, reports, code style). Preferences you approve apply to all your projects and stay on your computer. |
|
|
55
|
+
| **Model per role** | You pick the model and effort for planning, coding, testing, review and docs at the start of each task. The test role is offered a different model from the coding role: the same model shares the same blind spots. |
|
|
56
|
+
| **Learns from bugs** | When the same kind of bug comes back, it proposes one rule to prevent it; the rule is added only if you approve. |
|
|
57
|
+
|
|
58
|
+
## Step by step for beginners
|
|
59
|
+
|
|
60
|
+
You don't need to know how to code. Claude handles git, the terminal and installs; you describe what you want and make the choices.
|
|
61
|
+
|
|
62
|
+
**1. Setup (once)**
|
|
63
|
+
- Accounts: [GitHub](https://github.com) (free) and a Claude **Pro** or **Max** subscription.
|
|
64
|
+
- Apps: the [Claude desktop app](https://claude.com/download), [Node.js](https://nodejs.org) (LTS), [Git](https://git-scm.com/downloads).
|
|
65
|
+
|
|
66
|
+
**2. Create your project**
|
|
67
|
+
1. Make a folder for your project and select it in the **Code** tab of the Claude desktop app.
|
|
68
|
+
2. Install the kit. Pick one:
|
|
69
|
+
- Tell Claude: `run npx tillerhand init in this folder`.
|
|
70
|
+
- If you've [installed the TillerHand plugin once](#quick-start), type `/tillerhand:init` to Claude.
|
|
71
|
+
3. **Start a new session** in the same folder. The kit's commands and guardrails load in the new session.
|
|
72
|
+
|
|
73
|
+
**3. Start**
|
|
65
74
|
|
|
66
75
|
```
|
|
67
|
-
/start
|
|
76
|
+
/start An invoicing and payment tracker for freelancers
|
|
68
77
|
```
|
|
69
78
|
|
|
70
|
-
Claude
|
|
79
|
+
The first question is the language: Turkish, English or another one. Claude then talks to you in that language and asks its questions one by one. **The first option is always the recommended one**; pick it if you're unsure. Already have a project? Type `/adopt` instead of `/start`: Claude scans the code, derives the docs from it and brings the project into the kit's structure step by step.
|
|
71
80
|
|
|
72
|
-
**4.
|
|
81
|
+
**4. Every day**
|
|
73
82
|
|
|
74
|
-
|
|
|
83
|
+
| When | What to type |
|
|
75
84
|
|---|---|
|
|
76
|
-
|
|
|
77
|
-
|
|
|
78
|
-
|
|
|
79
|
-
|
|
|
85
|
+
| Starting work | `/build` (picks up the next task and tests it) |
|
|
86
|
+
| Checking status | `where are we?` or `/dashboard` |
|
|
87
|
+
| Something breaks | `/rollback` |
|
|
88
|
+
| Stopping | `/wrap-up`, then `/clear` |
|
|
80
89
|
|
|
81
|
-
**
|
|
82
|
-
- **
|
|
83
|
-
- **
|
|
84
|
-
- **
|
|
90
|
+
**Good to know**
|
|
91
|
+
- **Limits:** Pro has 5-hour and weekly limits. Claude warns at 90%, 95% and 99%; if a limit runs out, continue with `/build` once it resets.
|
|
92
|
+
- **Approval:** Database, design and cost decisions are never made without asking. Deleting data, payments and going live always need your approval.
|
|
93
|
+
- **Handoff:** Leaving the project to someone else? Use `/handoff`; they continue from the same point with `/handoff devral`.
|
|
85
94
|
|
|
86
|
-
##
|
|
95
|
+
## Quick start
|
|
87
96
|
|
|
88
|
-
**
|
|
97
|
+
**Requirements:** [Claude Code](https://claude.com/claude-code), Git, Node.js 18+
|
|
89
98
|
|
|
90
|
-
|
|
99
|
+
There are three ways to install. All three set the kit up in the project the same way; pick one.
|
|
91
100
|
|
|
92
|
-
**1. npm (
|
|
101
|
+
**1. npm (recommended):** the shortest path from a terminal.
|
|
93
102
|
|
|
94
103
|
```bash
|
|
95
|
-
mkdir
|
|
104
|
+
mkdir my-app && cd my-app
|
|
96
105
|
npx tillerhand init
|
|
97
106
|
claude
|
|
98
107
|
```
|
|
99
108
|
|
|
100
|
-
**2. Claude Code plugin:**
|
|
109
|
+
**2. Claude Code plugin:** install it on your computer once, then one command in every new project. The plugin only runs the install; the kit is still copied into the project as files, and each run fetches the latest version.
|
|
110
|
+
|
|
111
|
+
Once, in Claude Code (if `/plugin` doesn't open in the desktop app, run `claude plugin marketplace add …` and `claude plugin install …` in a terminal instead):
|
|
101
112
|
|
|
102
113
|
```text
|
|
103
114
|
/plugin marketplace add burakdogrul/TillerHand
|
|
104
115
|
/plugin install tillerhand@tillerhand
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
In every new project, in a session opened in the project folder:
|
|
119
|
+
|
|
120
|
+
```text
|
|
105
121
|
/tillerhand:init
|
|
106
122
|
```
|
|
107
123
|
|
|
108
|
-
**3. git:**
|
|
124
|
+
**3. git:** to read, change or contribute to the kit source. The kit stays in a `vibe-kit/` folder inside the project and goes into `.gitignore`.
|
|
109
125
|
|
|
110
126
|
```bash
|
|
111
127
|
git clone https://github.com/burakdogrul/TillerHand.git vibe-kit
|
|
112
128
|
node vibe-kit/kit/kit.mjs init
|
|
113
129
|
```
|
|
114
130
|
|
|
115
|
-
-
|
|
116
|
-
- Kit
|
|
117
|
-
- Codex
|
|
118
|
-
-
|
|
131
|
+
- On first launch Claude Code offers to install the kit's skill plugins; accept.
|
|
132
|
+
- Kit in another folder: `node <kit>/kit/kit.mjs init --project <project>`.
|
|
133
|
+
- For Codex or Antigravity: `npx tillerhand init --tool codex` (several: `--tool claude,codex`).
|
|
134
|
+
- Recommended: a code map ([codebase-memory-mcp](https://github.com/DeusData/codebase-memory-mcp)). The AI queries the code instead of reading it file by file, which saves tokens. `/start` offers to install it.
|
|
135
|
+
|
|
136
|
+
## Existing project: /adopt
|
|
137
|
+
|
|
138
|
+
If you already have code, the install is the same and only the first command changes. Run `npx tillerhand init` in the project root (your files are not overwritten; a conflicting kit file is placed next to yours as `.kit-new`), start a new session and type `/adopt`.
|
|
139
|
+
|
|
140
|
+
1. **Scans:** stack, folder layout, test status and git history. The code is not touched in this session.
|
|
141
|
+
2. **Derives docs from the code:** PRD, stack and architecture are drafted; you're asked what you don't like, and rules from your old `CLAUDE.md` are moved to `AGENTS.md` one by one with your approval.
|
|
142
|
+
3. **Tests for critical flows:** you're asked how flows like sign-in or payment should behave; the tests follow your answer, not what the code does today.
|
|
143
|
+
4. **Alignment roadmap:** a safe foundation, then the structure is moved feature by feature on a separate branch, then the findings. After that, `/build` every day.
|
|
119
144
|
|
|
120
|
-
##
|
|
145
|
+
## How it works
|
|
121
146
|
|
|
122
147
|
```mermaid
|
|
123
148
|
flowchart LR
|
|
124
|
-
A["/start<br/>
|
|
125
|
-
B --> C{"
|
|
126
|
-
C --> D["/plan-task<br/>
|
|
127
|
-
D --> E["/build<br
|
|
128
|
-
E --> F["/review-changes<br/>+ commit
|
|
149
|
+
A["/start<br/>idea → plan"] --> B["Phase 0<br/>setup, CI, first deploy"]
|
|
150
|
+
B --> C{"Each task"}
|
|
151
|
+
C --> D["/plan-task<br/>decisions + board"]
|
|
152
|
+
D --> E["/build<br/>acceptance tests first"]
|
|
153
|
+
E --> F["/review-changes<br/>+ commit gate"]
|
|
129
154
|
F --> G["/wrap-up"]
|
|
130
155
|
G --> C
|
|
131
|
-
C -->|"
|
|
156
|
+
C -->|"end of phase"| H["/findings-*<br/>/board convene<br/>/retro"]
|
|
132
157
|
H --> I["/release first"]
|
|
133
158
|
I --> J["/maintain"]
|
|
134
159
|
```
|
|
135
160
|
|
|
136
|
-
|
|
161
|
+
**The `/start` wizard** turns an idea into a plan in nine steps:
|
|
137
162
|
|
|
138
|
-
|
|
|
163
|
+
| Step | What happens |
|
|
139
164
|
|---|---|
|
|
140
|
-
| 0
|
|
141
|
-
| 1
|
|
142
|
-
| 2
|
|
143
|
-
| 3
|
|
144
|
-
| 4
|
|
145
|
-
| 5
|
|
146
|
-
| 6
|
|
147
|
-
| 7
|
|
148
|
-
| 8
|
|
149
|
-
| 9
|
|
165
|
+
| 0 Setup | Profile, planning depth, dashboard, limits |
|
|
166
|
+
| 1 Idea | The idea is challenged and a PRD is written |
|
|
167
|
+
| 2 Type | Web/SaaS, mobile or backend; any AI features |
|
|
168
|
+
| 3 Install | The chosen type and folder map are put in place |
|
|
169
|
+
| 4 Stack | The type's decision catalog: database, auth, hosting… |
|
|
170
|
+
| 5 Architecture | Data model, roles, services, unit economics |
|
|
171
|
+
| 6 Board | The expert board is set up (cost is shown first) |
|
|
172
|
+
| 7 Design | Style, color and type chosen from visual previews |
|
|
173
|
+
| 8 Roadmap | Prioritized tasks, each led by its acceptance tests |
|
|
174
|
+
| 9 Wrap-up | Summary and the first task |
|
|
150
175
|
|
|
151
|
-
**
|
|
176
|
+
**Decision protocol:** Each decision point offers 2-4 options; the recommended one comes first, and each option says when it's the better choice and what it costs. For decisions that are hard to reverse (database, auth, payments, data model) the board weighs in first. Decisions are logged in `docs/decisions/log.md` and never asked twice.
|
|
152
177
|
|
|
153
|
-
##
|
|
178
|
+
## Expert board
|
|
154
179
|
|
|
155
|
-
|
|
180
|
+
Board agents are generated for your project based on its type. The board advises; if it raises a critical finding (a veto), the work isn't done until you decide.
|
|
156
181
|
|
|
157
|
-
|
|
|
182
|
+
| Type | Suggested board |
|
|
158
183
|
|---|---|
|
|
159
|
-
| Web / SaaS |
|
|
160
|
-
|
|
|
161
|
-
| Backend |
|
|
184
|
+
| Web / SaaS | Product · Architect · Security · UX · Performance · Privacy · QA |
|
|
185
|
+
| Mobile | Product · Architect · Security · UX · Mobile Platform · Privacy · QA |
|
|
186
|
+
| Backend | Product · Architect · Security · API · DevOps · QA |
|
|
162
187
|
|
|
163
|
-
|
|
|
188
|
+
| Meeting | When |
|
|
164
189
|
|---|---|
|
|
165
|
-
| Plan | `/plan-task`
|
|
166
|
-
|
|
|
167
|
-
| Commit |
|
|
168
|
-
|
|
|
190
|
+
| Plan | End of `/plan-task` |
|
|
191
|
+
| Task review | End of `/build` |
|
|
192
|
+
| Commit | Every commit (light, diff only) |
|
|
193
|
+
| Phase end, launch | `/board convene`, `/release first` |
|
|
169
194
|
|
|
170
|
-
|
|
195
|
+
For important decisions a **council** runs: different models answer the same question independently, rank each other anonymously, and a chair writes the outcome. Code does the counting; the final call is still yours.
|
|
171
196
|
|
|
172
|
-
##
|
|
197
|
+
## Findings reports
|
|
173
198
|
|
|
174
|
-
|
|
199
|
+
Scans the project through an expert's eyes and writes the **top 20 findings** with evidence, a 0-100 score and a fix to `docs/findings/`. Each report is compared with the previous one and shown as a trend on the dashboard.
|
|
175
200
|
|
|
176
|
-
|
|
|
201
|
+
| Command | Perspective | Example finding |
|
|
177
202
|
|---|---|---|
|
|
178
|
-
| `/findings-tech` |
|
|
179
|
-
| `/findings-business` |
|
|
180
|
-
| `/findings-security` |
|
|
181
|
-
| `/findings-ux` | UX
|
|
182
|
-
| `/findings-perf` |
|
|
183
|
-
| `/findings-legal` |
|
|
184
|
-
| `/findings-all` |
|
|
203
|
+
| `/findings-tech` | Senior architect | N+1 queries, duplicated authorization checks |
|
|
204
|
+
| `/findings-business` | Industry expert | Missing refund rule, a feature competitors treat as standard |
|
|
205
|
+
| `/findings-security` | Attacker | IDOR, a key leaked to the client |
|
|
206
|
+
| `/findings-ux` | UX researcher | No empty state, low contrast |
|
|
207
|
+
| `/findings-perf` | Performance and FinOps | Large bundle, unbounded AI cost |
|
|
208
|
+
| `/findings-legal` | Compliance expert | Missing consent, personal data not in the inventory |
|
|
209
|
+
| `/findings-all` | All of them, in parallel | One summary and a shared fix plan |
|
|
185
210
|
|
|
186
|
-
##
|
|
211
|
+
## Project structure
|
|
187
212
|
|
|
188
|
-
|
|
213
|
+
Every project starts in this layout and stays in it. Code is organized by feature: everything for a feature lives under `features/<feature>/`.
|
|
189
214
|
|
|
190
215
|
```
|
|
191
216
|
.
|
|
192
|
-
├── .claude/ #
|
|
217
|
+
├── .claude/ # commands, agents, hooks, board, folder map
|
|
193
218
|
├── .github/ # CI, Dependabot
|
|
194
219
|
├── docs/
|
|
195
|
-
│ ├── product/ # PRD,
|
|
196
|
-
│ ├── architecture/ #
|
|
197
|
-
│ ├── decisions/ #
|
|
198
|
-
│ ├── quality/ # test plan
|
|
199
|
-
│ ├── security/ #
|
|
200
|
-
│ ├── operations/ #
|
|
201
|
-
│ └── findings/ #
|
|
202
|
-
├── src/
|
|
220
|
+
│ ├── product/ # PRD, roadmap, glossary, launch
|
|
221
|
+
│ ├── architecture/ # overview, stack, structure
|
|
222
|
+
│ ├── decisions/ # decision log and ADRs
|
|
223
|
+
│ ├── quality/ # test plan, metrics, retros
|
|
224
|
+
│ ├── security/ # security checklist
|
|
225
|
+
│ ├── operations/ # release, deploy setup, maintenance, accounts
|
|
226
|
+
│ └── findings/ # findings reports
|
|
227
|
+
├── src/ or app/ # feature-based code
|
|
203
228
|
├── tests/
|
|
204
229
|
└── AGENTS.md · CLAUDE.md · README.md · CHANGELOG.md
|
|
205
230
|
```
|
|
206
231
|
|
|
207
|
-
|
|
232
|
+
A new file outside the map is asked about, clutter like `*.bak` and `*-old.*` is blocked, and CI checks the structure on every PR.
|
|
208
233
|
|
|
209
|
-
##
|
|
234
|
+
## Guardrails
|
|
210
235
|
|
|
211
|
-
|
|
|
236
|
+
| Guardrail | What it does |
|
|
212
237
|
|---|---|
|
|
213
|
-
|
|
|
214
|
-
|
|
|
215
|
-
|
|
|
216
|
-
|
|
|
217
|
-
| Test
|
|
218
|
-
|
|
|
219
|
-
|
|
|
220
|
-
|
|
|
221
|
-
|
|
|
222
|
-
|
|
|
223
|
-
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
238
|
+
| Secret guard | Blocks API keys written into code or docs |
|
|
239
|
+
| Destructive-command shield | Blocks `DROP`, unconditional `DELETE`, `db reset`; asks before prod deploys and rollbacks |
|
|
240
|
+
| Package gate | Blocks packages that don't exist (on install and on `npx`, `uvx` runs); asks about very new ones or lookalikes of popular ones |
|
|
241
|
+
| Structure guard | Asks about files outside the map, blocks clutter files |
|
|
242
|
+
| Test separation | Only the `test-writer` agent writes test files; the main session and the coding agent are blocked |
|
|
243
|
+
| Test guard | Asks before a test is deleted, skipped or weakened |
|
|
244
|
+
| Deterministic gate | No commit until lint, type check, tests and Semgrep have run; catches machine-specific paths written into code |
|
|
245
|
+
| Commit gate | No commit without a board review and a green gate; a test file changed by a patch or a script stops it too |
|
|
246
|
+
| Edit lock | With `/freeze <folder>` on, the AI writes only inside that folder |
|
|
247
|
+
| Scope shield | Asks before writing to a file outside the approved plan |
|
|
248
|
+
| Config approval | Rule and guard files never change without your approval |
|
|
249
|
+
| Dev/prod split | The AI and the local setup connect to the dev database only |
|
|
250
|
+
|
|
251
|
+
## Commands
|
|
252
|
+
|
|
253
|
+
| Command | What it does |
|
|
228
254
|
|---|---|
|
|
229
|
-
| `/start [
|
|
230
|
-
| `/adopt` |
|
|
231
|
-
| `/plan-task [
|
|
232
|
-
| `/build [
|
|
233
|
-
| `/design` |
|
|
234
|
-
| `/review-changes` |
|
|
235
|
-
| `/fix-bug [
|
|
236
|
-
| `/qa` |
|
|
237
|
-
| `/findings-<
|
|
238
|
-
| `/board` |
|
|
239
|
-
| `/dashboard` |
|
|
240
|
-
| `/rollback` |
|
|
241
|
-
| `/freeze <
|
|
242
|
-
| `/wrap-up` |
|
|
243
|
-
| `/release [first]` |
|
|
244
|
-
| `/maintain` |
|
|
245
|
-
| `/retro` |
|
|
246
|
-
| `/handoff` |
|
|
247
|
-
| `/kit-update` |
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
-
|
|
261
|
-
-
|
|
262
|
-
|
|
263
|
-
|
|
255
|
+
| `/start [idea]` | Nine-step kickoff wizard |
|
|
256
|
+
| `/adopt` | Brings an existing project into the kit with an alignment roadmap |
|
|
257
|
+
| `/plan-task [task]` | Asks the decisions, plans with the board |
|
|
258
|
+
| `/build [task]` | Acceptance tests first, then code, proof and board review |
|
|
259
|
+
| `/design` | Design decisions with visual previews |
|
|
260
|
+
| `/review-changes` | Independent review and security agents |
|
|
261
|
+
| `/fix-bug [symptom]` | Root cause, red test, fix |
|
|
262
|
+
| `/qa` | Runs the UI criteria in a real browser |
|
|
263
|
+
| `/findings-<type>` | Findings reports |
|
|
264
|
+
| `/board` | Sets up and convenes the board; `council <question>` runs the council |
|
|
265
|
+
| `/dashboard` | Dashboard |
|
|
266
|
+
| `/rollback` | Returns to the last working state |
|
|
267
|
+
| `/freeze <folder>` | Locks edits to one folder |
|
|
268
|
+
| `/wrap-up` | Closes the session and saves progress |
|
|
269
|
+
| `/release [first]` | Launch checks; `first` also walks you through hosting, domain, backups and rollback |
|
|
270
|
+
| `/maintain` | Weekly, monthly and quarterly maintenance |
|
|
271
|
+
| `/retro` | Writes lessons back to the project and the kit |
|
|
272
|
+
| `/handoff` | Hands the project over or takes it over |
|
|
273
|
+
| `/kit-update` | Updates the project to the latest kit |
|
|
274
|
+
| `/language` | Changes the conversation language |
|
|
275
|
+
|
|
276
|
+
Every command, setting, tool and skill is in the **[guide](https://burakdogrul.github.io/TillerHand/kit/guide.html)**.
|
|
277
|
+
|
|
278
|
+
## Codex and Antigravity
|
|
279
|
+
|
|
280
|
+
The kit is built for Claude Code; its rules, commands and guardrails also work in OpenAI Codex and Google Antigravity. There the board runs on a single model, and the question UI, status bar and commit gate are not available. These tools don't report which agent is running, so test separation stays a written rule there. Install with `node <kit>/kit/kit.mjs init --tool codex` (or `antigravity`).
|
|
281
|
+
|
|
282
|
+
## Measured
|
|
283
|
+
|
|
284
|
+
The same tasks were run with and without the kit through `claude -p` and scored with hidden tests (3.18.2, Sonnet, 6 tasks, 24 runs per condition):
|
|
285
|
+
|
|
286
|
+
- Both conditions passed every hidden test.
|
|
287
|
+
- The kit's tests caught **63%** of bugs deliberately injected into the code; the tests written without the kit caught **31%**.
|
|
288
|
+
- With the kit, tests came before the code in every run; without it, in none.
|
|
289
|
+
|
|
290
|
+
## License
|
|
264
291
|
|
|
265
292
|
[MIT](LICENSE) © 2026 Burak Doğrul
|