tillerhand 3.48.1 → 3.49.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 +1 -1
- package/.claude/agents/security-auditor.md +1 -1
- package/.claude/agents/test-writer.md +1 -1
- package/.claude/board/board-product.md +1 -1
- package/.claude/board/council.md +1 -1
- package/.claude/board/rules.md +6 -6
- package/.claude/commands/adopt.md +3 -3
- package/.claude/commands/ask-mode.md +4 -4
- package/.claude/commands/board.md +1 -1
- package/.claude/commands/build.md +1 -1
- package/.claude/commands/design.md +4 -4
- package/.claude/commands/findings-business.md +1 -1
- package/.claude/commands/findings-legal.md +1 -1
- package/.claude/commands/findings-perf.md +1 -1
- package/.claude/commands/findings-security.md +2 -2
- package/.claude/commands/findings-tech.md +1 -1
- package/.claude/commands/findings-ux.md +1 -1
- package/.claude/commands/fix-bug.md +2 -2
- package/.claude/commands/handoff.md +2 -2
- package/.claude/commands/kit-update.md +2 -2
- package/.claude/commands/qa.md +1 -1
- package/.claude/commands/release.md +2 -2
- package/.claude/commands/research.md +3 -3
- package/.claude/commands/retro.md +1 -1
- package/.claude/commands/rollback.md +3 -3
- package/.claude/commands/start.md +4 -4
- package/.claude/commands/tools.md +1 -1
- package/.claude/commands/user-feedback.md +1 -1
- package/.claude/findings/lenses/business.md +1 -1
- package/.claude/findings/protocol.md +2 -2
- package/.claude/hooks/budget.mjs +1 -1
- package/.claude/hooks/checkpoint.mjs +2 -2
- package/.claude/hooks/commit-gate.mjs +18 -17
- package/.claude/hooks/council.mjs +37 -52
- package/.claude/hooks/dashboard-data.mjs +34 -42
- package/.claude/hooks/dashboard.mjs +18 -20
- package/.claude/hooks/destructive-guard.mjs +2 -2
- package/.claude/hooks/flow.mjs +1 -1
- package/.claude/hooks/freeze-guard.mjs +2 -2
- package/.claude/hooks/gate.mjs +21 -13
- package/.claude/hooks/labels.mjs +92 -152
- package/.claude/hooks/lang.mjs +25 -9
- package/.claude/hooks/messages.mjs +497 -494
- package/.claude/hooks/notify.mjs +1 -1
- package/.claude/hooks/prefs.mjs +10 -18
- package/.claude/hooks/preview.mjs +1 -1
- package/.claude/hooks/progress.mjs +7 -9
- package/.claude/hooks/qa-report.mjs +1 -3
- package/.claude/hooks/session-start.mjs +2 -3
- package/.claude/hooks/status-read.mjs +5 -5
- package/.claude/hooks/statusline.mjs +4 -4
- package/.claude/hooks/tools.mjs +3 -7
- package/.claude/hooks/usage.mjs +2 -2
- package/.claude/i18n/tr.json +496 -0
- package/.claude/security-patterns.json +1 -1
- package/.claude/skills/logo-design/SKILL.md +2 -2
- package/.claude/skills/motion-video/SKILL.md +1 -1
- package/.claude/skills/source-research/SKILL.md +1 -1
- package/.claude/skills/ui-motion/SKILL.md +1 -1
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +1 -1
- package/README.md +2 -2
- package/README.tr.md +2 -2
- package/docs/architecture/overview.md +1 -1
- package/docs/decisions/log.md +1 -1
- package/docs/legal/privacy-kvkk.md +35 -35
- package/docs/operations/deploy-setup.md +1 -1
- package/docs/operations/feature-flags.md +1 -1
- package/docs/product/glossary.md +3 -3
- package/docs/product/launch.md +1 -1
- package/docs/product/prd.md +2 -2
- package/docs/product/roadmap.md +1 -1
- package/docs/product/specs/_template.md +1 -1
- package/docs/product/unit-economics.md +1 -1
- package/docs/quality/test-plan.md +5 -5
- package/docs/workflow/decision-protocol.md +1 -2
- package/docs/workflow/mcp-catalog.md +1 -1
- package/docs/workflow/skills.md +2 -2
- package/docs/workflow/usage-limits.md +1 -1
- package/kit/CHANGELOG.md +34 -0
- package/kit/VERSION +1 -1
- package/kit/guide.html +56 -56
- package/kit/guide.tr.html +10 -10
- package/kit/kit.mjs +7 -42
- package/kit/templates/addons/ai/.env.example.append +3 -3
- package/kit/templates/addons/tr/docs/legal/turkiye.md +55 -55
- package/kit/templates/addons/tr/types/backend/.env.example.append +2 -2
- package/kit/templates/addons/tr/types/backend/app/shared/payments.py +1 -1
- package/kit/templates/addons/tr/types/backend/tests/security/test_payment_webhook.py +3 -3
- package/kit/templates/addons/tr/types/web-saas/.env.example.append +2 -2
- package/kit/templates/addons/tr/types/web-saas/.github/workflows/payment-webhook.yml +3 -3
- package/kit/templates/addons/tr/types/web-saas/src/lib/payments/webhook-signature.ts +1 -1
- package/kit/templates/addons/tr/types/web-saas/tests/security/payment-webhook.mjs +4 -4
- package/kit/templates/backend/.github/dependabot.yml +1 -1
- package/kit/templates/backend/.github/workflows/live-monitoring.yml +1 -1
- package/kit/templates/backend/docs/architecture/stack.md +3 -3
- package/kit/templates/mobile/.github/dependabot.yml +1 -1
- package/kit/templates/mobile/.github/workflows/ci.yml +2 -2
- package/kit/templates/mobile/docs/architecture/stack.md +4 -4
- package/kit/templates/mobile/docs/architecture/structure.md +1 -1
- package/kit/templates/mobile/docs/design/design-guide.md +1 -1
- package/kit/templates/web-saas/.github/dependabot.yml +1 -1
- package/kit/templates/web-saas/.github/workflows/ci.yml +2 -2
- package/kit/templates/web-saas/.github/workflows/live-monitoring.yml +1 -1
- package/kit/templates/web-saas/docs/architecture/stack.md +4 -4
- package/kit/templates/web-saas/docs/design/design-guide.md +1 -1
- package/kit/tools/antigravity/.agents/hooks.json +5 -5
- package/package.json +1 -1
package/docs/decisions/log.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Decisions
|
|
2
2
|
|
|
3
3
|
> There are two sections:
|
|
4
|
-
> 1. **Decision log:** one line for every decision asked. Door: `one-way` (costly to reverse) / `two-way` (easy to reverse). Decided by: `user` or `automatic` (when question mode is off).
|
|
4
|
+
> 1. **Decision log:** one line for every decision asked. Door: `one-way` (costly to reverse) / `two-way` (easy to reverse). Decided by: `user` or `automatic` (when question mode is off).
|
|
5
5
|
> 2. **ADRs** (Architecture Decision Record): decisions that affect the architecture or the long term, and all one-way decisions, go in a separate file: `docs/decisions/adr-NNNN-kisa-ad.md` (template: `adr-template.md`).
|
|
6
6
|
>
|
|
7
7
|
> Look here before asking a decision: if it was made before, do not ask again, follow it.
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Legal / KVKK / Privacy
|
|
2
2
|
|
|
3
|
-
>
|
|
4
|
-
>
|
|
5
|
-
>
|
|
3
|
+
> This is a checklist, not legal advice. Before you launch a product that processes personal data or takes payments,
|
|
4
|
+
> have a lawyer check the texts.
|
|
5
|
+
> If you serve users in Turkey, KVKK (6698) applies; if you have users from abroad, GDPR may apply too.
|
|
6
6
|
|
|
7
|
-
## 1.
|
|
7
|
+
## 1. Data inventory (do this first)
|
|
8
8
|
|
|
9
|
-
|
|
|
9
|
+
| Data | Why it is collected (purpose) | Legal basis | Where it is stored (country) | How long | Who it is shared with |
|
|
10
10
|
|---|---|---|---|---|---|
|
|
11
|
-
|
|
|
12
|
-
| IP,
|
|
11
|
+
| Email | Account, notification | Performance of a contract | [Service, region] | Until the account is deleted | [Email service] |
|
|
12
|
+
| IP, device information | Security, error tracking | Legitimate interest | | | [Sentry etc.] |
|
|
13
13
|
| [...] | | | | | |
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Rule: **No purpose, no collection.** Do not ask for data you do not use.
|
|
16
16
|
|
|
17
|
-
## 2.
|
|
17
|
+
## 2. Texts that must be live
|
|
18
18
|
|
|
19
|
-
- [ ] **
|
|
20
|
-
- [ ] **
|
|
21
|
-
- [ ]
|
|
22
|
-
- [ ] **
|
|
23
|
-
- [ ] **
|
|
24
|
-
- [ ]
|
|
19
|
+
- [ ] **Privacy notice (KVKK art. 10):** Data controller, purposes, parties it is transferred to, collection method, rights.
|
|
20
|
+
- [ ] **Privacy policy:** Can be combined with the privacy notice. Link in the sign-up form and in the footer.
|
|
21
|
+
- [ ] **Cookie policy + cookie consent banner:** Non-essential (analytics, marketing) cookies are **not loaded before consent**. The reject button must be as visible as the accept button.
|
|
22
|
+
- [ ] **Terms of use / membership agreement.**
|
|
23
|
+
- [ ] **Explicit consent text:** Only for processing that needs explicit consent (marketing, some cases of transfer abroad, special categories of data). Do not merge it into the same checkbox as the privacy notice.
|
|
24
|
+
- [ ] For a paid product: **Distance sales contract** and **pre-information form** (Law no. 6502), return/withdrawal terms.
|
|
25
25
|
|
|
26
|
-
## 3.
|
|
26
|
+
## 3. User rights processes
|
|
27
27
|
|
|
28
|
-
- [ ]
|
|
29
|
-
- [ ] **
|
|
30
|
-
- [ ]
|
|
28
|
+
- [ ] The user can see / download their data (or request it).
|
|
29
|
+
- [ ] **Account deletion** can be done inside the app and really deletes/anonymizes (the status in backups is stated in the text).
|
|
30
|
+
- [ ] The application channel (email address) is written in the text; applications are answered **within 30 days at most**.
|
|
31
31
|
|
|
32
|
-
## 4.
|
|
32
|
+
## 4. Transfer of data abroad
|
|
33
33
|
|
|
34
|
-
Vercel, Supabase, AWS, OpenAI, Sentry
|
|
34
|
+
Services with servers abroad, such as Vercel, Supabase, AWS, OpenAI, Sentry = transfer abroad.
|
|
35
35
|
|
|
36
|
-
- [ ]
|
|
37
|
-
- [ ]
|
|
38
|
-
- [ ] KVKK
|
|
36
|
+
- [ ] Which services keep data in which region is written in the data inventory.
|
|
37
|
+
- [ ] The EU region was chosen where possible.
|
|
38
|
+
- [ ] The transfer basis under KVKK art. 9 was determined (after the 2024 amendment: if a standard contract is signed, notification to the Personal Data Protection Authority (KVKK Authority) is required within the deadline). **Ask a lawyer.**
|
|
39
39
|
|
|
40
|
-
## 5.
|
|
40
|
+
## 5. Other obligations
|
|
41
41
|
|
|
42
|
-
- [ ] **VERBİS**
|
|
43
|
-
- [ ]
|
|
44
|
-
- [ ]
|
|
45
|
-
- [ ]
|
|
46
|
-
- [ ]
|
|
42
|
+
- [ ] The **VERBİS** registration obligation was checked (an exemption may apply based on the number of employees / balance sheet thresholds).
|
|
43
|
+
- [ ] If commercial email/SMS is sent: prior consent, **İYS** (Message Management System) registration, an opt-out link in every message.
|
|
44
|
+
- [ ] In case of a data breach: the procedure for notifying the Personal Data Protection Board (KVKK Board) within **72 hours** is written in `docs/operations/maintenance.md` → incident response.
|
|
45
|
+
- [ ] If the product is not aimed at children, the age limit is stated in the terms of use.
|
|
46
|
+
- [ ] The licenses of the fonts, icons, images and libraries used allow commercial use.
|
|
47
47
|
|
|
48
|
-
## 6.
|
|
48
|
+
## 6. Extra requirements for mobile stores
|
|
49
49
|
|
|
50
|
-
`docs/architecture/stack.md` (
|
|
50
|
+
See `docs/architecture/stack.md` (mobile) → the "Go live (extra)" section: App Store privacy labels, Google Play Data Safety form, in-app account deletion.
|
|
51
51
|
|
|
52
|
-
## 7.
|
|
52
|
+
## 7. Review
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
Update this file and the live texts every **3 months** and whenever a new data type / a new service is added.
|
|
@@ -30,7 +30,7 @@ Checked: 2026-10-25. Sources: [Environment variables](https://vercel.com/docs/en
|
|
|
30
30
|
|
|
31
31
|
**Environment variables.** Settings → Environment Variables. For each variable pick the environment: Production, Preview, Development. Keys and tokens are entered as **Secret** (unreadable after saving); open values such as URLs as **Config**. A change does not apply to old deploys; a new deploy is needed. Limit: 64 KB total per deploy (5 KB per variable at the edge).
|
|
32
32
|
|
|
33
|
-
**Domain.** Settings → Domains → Add Domain (CLI: `vercel domains add example.com <
|
|
33
|
+
**Domain.** Settings → Domains → Add Domain (CLI: `vercel domains add example.com <project>`). When you add the apex, `www` is recommended: add both and redirect one to the other.
|
|
34
34
|
- Apex (`example.com`): **A** record. Take the value from the project's domain card. In most projects it is `76.76.21.21`; new projects may differ (e.g. `216.198.79.1`); verification looks for the value on the card.
|
|
35
35
|
- Subdomain (`www`, `app`): **CNAME**, the target is project-specific (on the card, e.g. `…vercel-dns-017.com`).
|
|
36
36
|
- If the domain is in another Vercel account, a **TXT** verification named `_vercel` is requested.
|
|
@@ -21,7 +21,7 @@ The `/dashboard` dashboard reads this table. Date format `YYYY-MM-DD`, status `o
|
|
|
21
21
|
|
|
22
22
|
## Rules
|
|
23
23
|
|
|
24
|
-
- The flag name uses the `
|
|
24
|
+
- The flag name uses the `feature_name` form and matches `docs/product/glossary.md`.
|
|
25
25
|
- The code path is also tested while the flag is off (at least one test for each of the two states).
|
|
26
26
|
- After the feature is open to everyone and has run without problems for 2 weeks, the flag and the old code path are removed.
|
|
27
27
|
- Kill switch: the step to turn it off from the panel or an environment variable is written in this file and has been tried at least once.
|
package/docs/product/glossary.md
CHANGED
|
@@ -17,11 +17,11 @@ The states a record can have and the transitions between them. This stops the AI
|
|
|
17
17
|
```
|
|
18
18
|
[invoice.status]: draft → sent → paid
|
|
19
19
|
↘ overdue → paid
|
|
20
|
-
|
|
20
|
+
draft → cancelled
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
## Writing rules
|
|
24
24
|
|
|
25
25
|
- Code: English (`camelCase` variable, `PascalCase` component/type, `snake_case` DB field).
|
|
26
|
-
- UI text:
|
|
27
|
-
- Date: `
|
|
26
|
+
- UI text: [language]; formal or informal "you", if the language has both → [pick]
|
|
27
|
+
- Date and money: format with `Intl` and the UI locale (e.g. `tr-TR`: `29.10.2026`, `1.234,56 ₺`) → [locale]
|
package/docs/product/launch.md
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|---|---|---|
|
|
15
15
|
| `signup` | Signup completed | Acquisition |
|
|
16
16
|
| `activated` | [First moment of value: e.g. sent their first invoice] | Activation |
|
|
17
|
-
| `[
|
|
17
|
+
| `[main_action]` | [The product's main action] | Usage |
|
|
18
18
|
| `upgrade` | Moved to a paid plan | Revenue |
|
|
19
19
|
|
|
20
20
|
- [ ] Feedback channel: an in-app form or email, in an easy-to-see place.
|
package/docs/product/prd.md
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
| [Primary] | | | |
|
|
15
15
|
| [Secondary] | | | |
|
|
16
16
|
|
|
17
|
-
## 3. Value proposition
|
|
17
|
+
## 3. Value proposition
|
|
18
18
|
|
|
19
19
|
[One sentence: "With [product], [user] gets [result], because [difference]."]
|
|
20
20
|
|
|
@@ -40,7 +40,7 @@ The dashboard reads the "Priority" label; keep its wording.
|
|
|
40
40
|
### AC-02: [Feature name]
|
|
41
41
|
...
|
|
42
42
|
|
|
43
|
-
## 6. Out of scope (
|
|
43
|
+
## 6. Out of scope (NOT built in this release)
|
|
44
44
|
|
|
45
45
|
This list stops the AI from widening the scope. Write every "later" idea that comes to mind here.
|
|
46
46
|
|
package/docs/product/roadmap.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> Each task must be small enough to **finish in one session** (about 1-3 hours, 1-5 files).
|
|
4
4
|
> Split a task that looks big. Always give the AI a single task.
|
|
5
5
|
> Format: `- [ ] G-NNN: [what] — done when: [how do I know it is done?]`
|
|
6
|
-
> The dashboard reads the "## Phase N" headings; keep that form
|
|
6
|
+
> The dashboard reads the "## Phase N" headings; keep that form.
|
|
7
7
|
|
|
8
8
|
## Phase 0 — Setup (skeleton)
|
|
9
9
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
> The "behavior that must not change" lines start with an acceptance criterion id (`- AC-01.1: ...`). The gate (`gate.mjs --run`) goes red if these ids have no test or if they are red in the last test report.
|
|
5
5
|
> The gate reads only the test report written in its own run; if the test command writes no JUnit report, it only checks that the test exists.
|
|
6
6
|
> If you change behavior on purpose or change a criterion id, update this file first; if the spec is no longer valid, move it to `docs/archive/`.
|
|
7
|
-
> The dashboard reads the labels, values and the "Behavior that must not change" heading below; keep their wording.
|
|
7
|
+
> The dashboard reads the labels, values and the "Behavior that must not change" heading below; keep their wording.
|
|
8
8
|
|
|
9
9
|
**Type:** [feature / bug]
|
|
10
10
|
**Class:** [bug only: empty-input / validation / authorization / date-time / locale / sorting / concurrency / configuration / external-service / contract / ui-state / other]
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
> can pass the price without anyone noticing. `/dashboard` does the calculation from the inputs below **automatically**.
|
|
5
5
|
> Filled in at `/start` Step 5; `/maintain monthly` updates it with real bills.
|
|
6
6
|
> Use a dot as the decimal separator in numbers (e.g. `3.5`). Use a single currency.
|
|
7
|
-
> The dashboard reads the input labels below; keep their wording
|
|
7
|
+
> The dashboard reads the input labels below; keep their wording.
|
|
8
8
|
|
|
9
9
|
## Inputs
|
|
10
10
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> Approach: **Balanced.** Automatic tests are required for critical flows; a manual checklist is enough for the rest.
|
|
4
4
|
> Test tools and commands: `docs/architecture/stack.md`.
|
|
5
5
|
|
|
6
|
-
## 1. Critical flows (
|
|
6
|
+
## 1. Critical flows (automatic test REQUIRED)
|
|
7
7
|
|
|
8
8
|
Every change that touches one of these flows comes with a test. If a test is red, there is no merge/deploy.
|
|
9
9
|
|
|
@@ -48,7 +48,7 @@ About half of AI code has a security hole (Veracode, 2025). So for every endpoin
|
|
|
48
48
|
| Log injection | A line break (`
|
|
49
49
|
`) and a fake log line in the input | Escaped / single line in the logs |
|
|
50
50
|
|
|
51
|
-
Test names start with the prefix `ATTACK
|
|
51
|
+
Test names start with the prefix `ATTACK:`. The `security-auditor` agent counts missing adversarial tests as CRITICAL.
|
|
52
52
|
|
|
53
53
|
**If Supabase is used,** the adversarial test of the database layer comes ready: `tests/security/rls.mjs`. An anonymous user and a second user try to read, update, delete and write on behalf of the first user's rows; it is red if there is a public table with RLS off or not registered in the test. It runs only against local Supabase (CI `rls` job, no secret needed). Every new table is added to the `TABLES` list. Tests at the application layer (server action, route handler) are still written separately according to the table above.
|
|
54
54
|
|
|
@@ -72,7 +72,7 @@ Test names start with the prefix `ATTACK:` (tests written before 3.48 may use `S
|
|
|
72
72
|
## 4. Commands
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
|
-
[test
|
|
76
|
-
[test
|
|
77
|
-
[e2e
|
|
75
|
+
[test command] # all
|
|
76
|
+
[test command] [file] # single file
|
|
77
|
+
[e2e command] # end to end
|
|
78
78
|
```
|
|
@@ -17,7 +17,6 @@ Every choice that affects one of the following is a **decision point** and is as
|
|
|
17
17
|
| `security` | Authorization model, roles, session length, rate limits, personal data handling |
|
|
18
18
|
| `cost` | Choice of paid service, plan tier, AI model choice, spending limits |
|
|
19
19
|
|
|
20
|
-
Projects set up before 3.48 may use the old Turkish codes (`urun`, `teknik`, `tasarim`, `icerik`, `veri`, `guvenlik`, `maliyet`); they mean the same topic. Write the English code; in a log that already uses the Turkish codes, keep using them.
|
|
21
20
|
|
|
22
21
|
**Not a decision point** (not asked; apply it and report it briefly in the status block): file/variable/function names (follow `docs/product/glossary.md`), the internal layout of code, formatting, repeating a pattern the project has already decided.
|
|
23
22
|
|
|
@@ -55,7 +54,7 @@ Classify every decision before asking and state it in the question text:
|
|
|
55
54
|
|
|
56
55
|
## 4. Question mode
|
|
57
56
|
|
|
58
|
-
The state is kept in the `**Question mode:**` line of `docs/workflow/progress.md
|
|
57
|
+
The state is kept in the `**Question mode:**` line of `docs/workflow/progress.md`. Default: `on · closed topics: none`.
|
|
59
58
|
|
|
60
59
|
| What the user says | What you do |
|
|
61
60
|
|---|---|
|
|
@@ -21,7 +21,7 @@ These servers do not come in `.mcp.json`; the command that needs one asks the us
|
|
|
21
21
|
| Playwright MCP | Exploratory browser testing, long interactive flow | `claude mcp add --scope local playwright -- npx -y @playwright/mcp@0.0.83` | For screenshots, `node .claude/hooks/preview.mjs`. For interactive trials, use the Playwright CLI first (every command is asked; in the project folder it reads the config file in the repo): `npx -y @playwright/cli@0.1.22 open <url>`, `snapshot`, `console`, `requests`, `screenshot`. The CLI does not force page data into the context, so it spends fewer tokens |
|
|
22
22
|
| Chrome DevTools MCP | `/findings-perf`, `/findings-ux` | `claude mcp add --scope local chrome-devtools -- npx -y chrome-devtools-mcp@1.10.1` | Performance trace (LCP, CLS, INP), network waterfall, console |
|
|
23
23
|
| Figma | `/design` (if the design is in Figma) | `claude mcp add --scope local --transport http figma-remote-mcp https://mcp.figma.com/mcp` | OAuth (`/mcp`). Figma's official plugin (~17 skills) is not used because of the context budget |
|
|
24
|
-
| rea (CLI, not MCP) | `/research` (how a competitor feature works), `/adopt` (a part with no source) | No setup: `npx -y rea-agents@6.2.0 <
|
|
24
|
+
| rea (CLI, not MCP) | `/research` (how a competitor feature works), `/adopt` (a part with no source) | No setup: `npx -y rea-agents@6.2.0 <subcommand>`; subcommands: `npx -y rea-agents@6.2.0 --help`. Needs Node `^22.19` or `>=24.11` | Only software the user owns or is authorized to inspect. The license agreement (EULA) may forbid reverse engineering; commercial tools (IDA, Hopper, JEB) follow their own license. `setup` is not run (it changes agent settings). The analysis is local; inspecting a site sends real requests to that site |
|
|
25
25
|
| Supabase dev (write) | `/build` (trying things in dev) | `claude mcp add --scope local --transport http supabase-dev "https://mcp.supabase.com/mcp?project_ref=DEV_REF&features=database,docs"` | Only the **development** project or branch (`DEV_REF`). The prod ref is never written to this definition. Schema changes are still made with a migration file |
|
|
26
26
|
|
|
27
27
|
## Opened when a service is chosen
|
package/docs/workflow/skills.md
CHANGED
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
|
|
52
52
|
## Context packages
|
|
53
53
|
|
|
54
|
-
The skill descriptions of every plugin that is on are loaded into the context in each session. The skill list is limited to 1% of the context; when it overflows, the descriptions of rarely used skills drop and Claude does not recognize them. Skills inside a plugin cannot be switched off one by one. So plugins are split into **core** and **packages**. Packages come switched off in `.claude/settings.json`; in its first step the related command checks with `node .claude/hooks/tools.mjs --required <
|
|
54
|
+
The skill descriptions of every plugin that is on are loaded into the context in each session. The skill list is limited to 1% of the context; when it overflows, the descriptions of rarely used skills drop and Claude does not recognize them. Skills inside a plugin cannot be switched off one by one. So plugins are split into **core** and **packages**. Packages come switched off in `.claude/settings.json`; in its first step the related command checks with `node .claude/hooks/tools.mjs --required <package>` and, if the package is off, asks to switch it on together with its cost. Switching on affects only this machine (`.claude/settings.local.json`). Management: `/tools`. Definitions: `.claude/hooks/tools.mjs` → `PACKAGES`.
|
|
55
55
|
|
|
56
56
|
| Package | Plugins | Command that switches it on |
|
|
57
57
|
|---|---|---|
|
|
@@ -150,7 +150,7 @@ First the style direction is chosen (`/design`). Each direction maps to a skill;
|
|
|
150
150
|
| PR description | `mattpocock-skills:pr` |
|
|
151
151
|
| Edit CLAUDE.md, a command or a skill (`/retro`) | `mattpocock-skills:writing-for-agents` |
|
|
152
152
|
| CLAUDE.md audit, session lessons (`/retro`, `/wrap-up`) | `claude-md-management`: `claude-md-improver`, `/revise-claude-md` |
|
|
153
|
-
| "Don't do this again" → permanent rule | `/hookify <
|
|
153
|
+
| "Don't do this again" → permanent rule | `/hookify <rule>` (`.claude/hookify.*.local.md`) |
|
|
154
154
|
| React/Next performance (web) · React Native (mobile) | `react-best-practices`, `composition-patterns` · `react-native-guidelines` (Vercel) |
|
|
155
155
|
| Database schema, query, index | `postgres-best-practices:*`, `supabase:*` |
|
|
156
156
|
| Token and cost detail | `/session-report` (HTML), `node .claude/hooks/cost.mjs` for the dashboard |
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
| 🟡 yellow | 60–84% | 70–89% | Before work starts, state the estimated cost. In board meetings, halve the member count. |
|
|
19
19
|
| 🔴 red | ≥ 85% | ≥ 90% | Before new work starts, state the estimated cost and the remaining share in one line, then continue. Offer the options in §3 only if the user asks. |
|
|
20
20
|
|
|
21
|
-
The thresholds are in `.claude/hooks/usage.mjs` → `
|
|
21
|
+
The thresholds are in `.claude/hooks/usage.mjs` → `THRESHOLDS`; if you change them, change both together.
|
|
22
22
|
|
|
23
23
|
## 3. When planning work
|
|
24
24
|
|
package/kit/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,40 @@
|
|
|
3
3
|
The kit version is in `kit/VERSION`. To update a project, run `/kit-update` in it.
|
|
4
4
|
Items with an "Adapt by hand" note concern files owned by the project; the update does not touch them.
|
|
5
5
|
|
|
6
|
+
## [3.49.1] - 2026-10-29
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
- **The gate command approval names keys that will not run.** A key under `## Commands` the gate does not read (for example `tip kontrol:` instead of `type check:`) is listed in the approval dialog and in the gate's "command approval needed" text, so a skipped check is visible before you approve.
|
|
10
|
+
- The dashboard's copy button keeps a path in the command (`/fix-bug login fails on /api/login`, `/fix-bug blank page in /index.html`); only a second slash command (`then /clear`) cuts it.
|
|
11
|
+
|
|
12
|
+
## [3.49.0] - 2026-10-29
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
- **Everything the kit ships is English.** Hooks, commands, agents, board files, templates, the eval fixtures and the Turkey add-on (`docs/legal/turkiye.md`, the KVKK checklist) are written in English; official names (KVKK, GİB, e-Fatura, iyzico, PayTR) stay as they are. The conversation language is still chosen in the first question of `/start` and `/adopt`.
|
|
16
|
+
- **Turkish interface texts ship as a translation file.** Hook messages, the status line and the dashboard read Turkish from `.claude/i18n/tr.json`; other languages are still translated by `/language`. A missing key falls back to English.
|
|
17
|
+
- **A set-up project with no language chosen talks in English.**
|
|
18
|
+
- **Labels and keys stay English in every language.** The session note tells the AI to keep `**Active phase:**`, `## Where we left off`, `type check:` and the verdict words English, because the tools read them.
|
|
19
|
+
- Skill descriptions no longer carry Turkish trigger words.
|
|
20
|
+
- Renamed: the checkpoint tag prefix is `checkpoint/` (was `calisan/`), the path marker is `kit:path-allowed` (was `kit:yol-izinli`), the AI add-on variables are `AI_MODEL_DEFAULT`, `AI_MODEL_FAST`, `AI_USER_DAILY_LIMIT`, the Dependabot group is `minor-updates`, the preview folder of an unnamed task is `.previews/latest`, and `/adopt` archives the old files as `claude-md-old.md` / `agents-md-old.md`.
|
|
21
|
+
- The dashboard warns when a board meeting result has no verdict it knows, and the gate warns about unknown keys under `## Commands`.
|
|
22
|
+
|
|
23
|
+
### Breaking
|
|
24
|
+
- Turkish labels, values, verdicts, ids (`Ö-01.1`, `O_01_1`), prefixes (`SALDIRI:`) and arguments (`/tools ac`, `hepsi`, `K/O/B`…) are no longer read. A project file that still uses them looks empty to the dashboard and the status line, and a meeting with a Turkish verdict shows as unknown.
|
|
25
|
+
- The gate asks for the command approval once more after the update.
|
|
26
|
+
- The update no longer migrates from older versions: the narrator style rename, the old dashboard flag, the old preferences file name and the old package names are not rewritten.
|
|
27
|
+
- `/rollback` lists only `checkpoint/*` tags.
|
|
28
|
+
|
|
29
|
+
### Compatibility
|
|
30
|
+
- Adapt by hand: move Turkish labels in `docs/workflow/progress.md`, `AGENTS.md` (`## Commands`), the decision log and board files to English; take the kit's template as `.kit-new` and copy your content over. Rename the AI variables in your `.env`, and replace `kit:yol-izinli` markers with `kit:path-allowed`.
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
- The eval set-up wrote Turkish labels into the test project, so the kit condition read nothing from it.
|
|
34
|
+
- **The gate is no longer green on Semgrep alone.** With lint, type check and test all missing (no `## Commands` block, or a heading in another language), a clean Semgrep scan made the gate green and opened the commit gate. Now the result is EMPTY unless a project check passed.
|
|
35
|
+
- The unknown-key warning under `## Commands` reads only the code block: a note line or an address no longer counts as a key.
|
|
36
|
+
- A translation whose text drops or adds a placeholder (`{list}`, `{path}`) is not shown; the English text is shown instead, so an approval dialog never hides what it asks. Translation files are read once per process.
|
|
37
|
+
- The Turkey add-on names the Personal Data Protection Board and the Personal Data Protection Authority separately (who issues decisions, who is notified), and the e-invoice source keeps the communiqué's short name (VUK No. 509).
|
|
38
|
+
- `/start` says that writing a translation file asks for approval once.
|
|
39
|
+
|
|
6
40
|
## [3.48.1] - 2026-10-29
|
|
7
41
|
|
|
8
42
|
### Changed
|
package/kit/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.
|
|
1
|
+
3.49.1
|