@jeiemgi/cckit 0.1.6
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-plugin/plugin.json +22 -0
- package/AGENTS.md +101 -0
- package/LICENSE-APACHE +202 -0
- package/LICENSE-MIT +21 -0
- package/README.md +143 -0
- package/SECURITY.md +22 -0
- package/bin/cckit +215 -0
- package/cckit.config.json +34 -0
- package/commands/kit-add.md +42 -0
- package/commands/kit-docs.md +45 -0
- package/commands/kit-doctor.md +52 -0
- package/commands/kit-export-project.md +58 -0
- package/commands/kit-export-training.md +49 -0
- package/commands/kit-init.md +126 -0
- package/commands/kit-routines.md +59 -0
- package/commands/kit-update.md +132 -0
- package/docs/kit-annotate/01-explainer.html +225 -0
- package/docs/kit-annotate/02-implementation-plan.html +196 -0
- package/docs/media/.onboarding-capture.cast +5 -0
- package/docs/media/README.md +43 -0
- package/docs/media/build-demo.sh +63 -0
- package/docs/media/build-kit-init.sh +51 -0
- package/docs/media/build-onboarding.sh +51 -0
- package/docs/media/kit-dry-run.cast +107 -0
- package/docs/media/kit-dry-run.gif +0 -0
- package/docs/media/kit-init.cast +56 -0
- package/docs/media/kit-init.gif +0 -0
- package/docs/media/kit-onboarding.cast +148 -0
- package/docs/media/kit-onboarding.gif +0 -0
- package/githooks/pre-commit +18 -0
- package/kit.config.schema.json +105 -0
- package/package.json +54 -0
- package/privacy-denylist.example +8 -0
- package/profiles/automation.json +36 -0
- package/profiles/content.json +41 -0
- package/profiles/minimal.json +31 -0
- package/profiles/research.json +37 -0
- package/profiles/software.json +32 -0
- package/scripts/annotate-setup.sh +149 -0
- package/scripts/autopilot.sh +50 -0
- package/scripts/capture-project-ids.sh +53 -0
- package/scripts/check.sh +66 -0
- package/scripts/contribute.sh +48 -0
- package/scripts/debug.sh +54 -0
- package/scripts/init-upgrade-test.sh +99 -0
- package/scripts/init.sh +827 -0
- package/scripts/install.sh +24 -0
- package/scripts/kit-add-test.sh +62 -0
- package/scripts/kit-add.sh +115 -0
- package/scripts/kit-adopt-test.sh +61 -0
- package/scripts/kit-adopt.sh +122 -0
- package/scripts/kit-bump-version.sh +79 -0
- package/scripts/kit-digest.sh +126 -0
- package/scripts/kit-doctor.sh +663 -0
- package/scripts/kit-export-project-test.sh +82 -0
- package/scripts/kit-export-project.sh +245 -0
- package/scripts/kit-export-training-test.sh +51 -0
- package/scripts/kit-export-training.sh +175 -0
- package/scripts/kit-migrate-test.sh +80 -0
- package/scripts/kit-migrate.sh +190 -0
- package/scripts/kit-onboard-test.sh +63 -0
- package/scripts/kit-onboard.sh +69 -0
- package/scripts/kit-promote-test.sh +54 -0
- package/scripts/kit-promote.sh +102 -0
- package/scripts/kit-remove-test.sh +61 -0
- package/scripts/kit-remove.sh +84 -0
- package/scripts/kit-routines.sh +322 -0
- package/scripts/kit-version-check.sh +91 -0
- package/scripts/kit-wire-test.sh +54 -0
- package/scripts/kit-wire.sh +132 -0
- package/scripts/knowledge-lint.sh +96 -0
- package/scripts/lib/cckit-output.sh +36 -0
- package/scripts/lib/effort-metrics.sh +452 -0
- package/scripts/lib/effort-ops-test.sh +83 -0
- package/scripts/lib/effort-ops.sh +132 -0
- package/scripts/lib/effort-plan.sh +104 -0
- package/scripts/lib/effort.sh +191 -0
- package/scripts/lib/engine-adapter.sh +92 -0
- package/scripts/lib/gh-log.sh +58 -0
- package/scripts/lib/gh-project.sh +212 -0
- package/scripts/lib/handoff.sh +35 -0
- package/scripts/lib/kit-cli-test.sh +42 -0
- package/scripts/lib/kit-cli.sh +32 -0
- package/scripts/lib/kit-config-resolve.sh +145 -0
- package/scripts/lib/kit-config.sh +88 -0
- package/scripts/lib/kit-engine-test.sh +107 -0
- package/scripts/lib/kit-events.sh +62 -0
- package/scripts/lib/kit-gc.sh +117 -0
- package/scripts/lib/kit-interview-test.sh +77 -0
- package/scripts/lib/kit-interview.sh +203 -0
- package/scripts/lib/kit-local.sh +79 -0
- package/scripts/lib/kit-manifest.sh +127 -0
- package/scripts/lib/kit-mode-test.sh +49 -0
- package/scripts/lib/kit-mode.sh +67 -0
- package/scripts/lib/kit-operate.sh +105 -0
- package/scripts/lib/kit-profile-test.sh +62 -0
- package/scripts/lib/kit-profile.sh +115 -0
- package/scripts/lib/kit-task-ops-test.sh +63 -0
- package/scripts/lib/kit-task-ops.sh +341 -0
- package/scripts/lib/pr-evidence.sh +173 -0
- package/scripts/lib/project-scan.sh +16 -0
- package/scripts/lib/react-detect.sh +78 -0
- package/scripts/lib/role-identity.sh +47 -0
- package/scripts/lib/secret-guard.sh +96 -0
- package/scripts/lib/toon.sh +35 -0
- package/scripts/lib/ui.sh +42 -0
- package/scripts/lib/version-bump.sh +59 -0
- package/scripts/lib/worktree-issue-test.sh +45 -0
- package/scripts/lib/worktree-issue.sh +73 -0
- package/scripts/lib/worktree-start.sh +280 -0
- package/scripts/orchestrate.sh +160 -0
- package/scripts/portable-test.sh +53 -0
- package/scripts/publish.sh +94 -0
- package/scripts/setup-labels.sh +25 -0
- package/scripts/setup-milestones.sh +17 -0
- package/scripts/showcase.sh +64 -0
- package/scripts/status.sh +44 -0
- package/scripts/task-sync.sh +59 -0
- package/scripts/test.sh +48 -0
- package/scripts/web-install.sh +22 -0
- package/skills/kit-annotate/SKILL.md +107 -0
- package/skills/kit-autopilot/SKILL.md +108 -0
- package/skills/kit-contribute/SKILL.md +134 -0
- package/skills/kit-customize/SKILL.md +134 -0
- package/skills/kit-dev/SKILL.md +67 -0
- package/skills/kit-digest/SKILL.md +41 -0
- package/skills/kit-effort-close/SKILL.md +156 -0
- package/skills/kit-effort-new/SKILL.md +173 -0
- package/skills/kit-effort-pr/SKILL.md +139 -0
- package/skills/kit-effort-start/SKILL.md +85 -0
- package/skills/kit-gc/SKILL.md +80 -0
- package/skills/kit-onboard/SKILL.md +50 -0
- package/skills/kit-security-sweep/SKILL.md +57 -0
- package/skills/kit-ship/SKILL.md +43 -0
- package/skills/kit-task-close/SKILL.md +66 -0
- package/skills/kit-task-new/SKILL.md +51 -0
- package/skills/kit-task-pr/SKILL.md +43 -0
- package/skills/kit-task-pr-auto/SKILL.md +27 -0
- package/skills/kit-task-pr-merge/SKILL.md +53 -0
- package/skills/kit-task-start/SKILL.md +76 -0
- package/skills/kit-task-sync/SKILL.md +37 -0
- package/templates/CLAUDE.md.tmpl +106 -0
- package/templates/agents/analyst.md +55 -0
- package/templates/agents/auto-dev.md +93 -0
- package/templates/agents/backend.md +59 -0
- package/templates/agents/designer.md +73 -0
- package/templates/agents/devops.md +57 -0
- package/templates/agents/editor.md +48 -0
- package/templates/agents/frontend.md +81 -0
- package/templates/agents/generalist.md +46 -0
- package/templates/agents/local-delegate.md +70 -0
- package/templates/agents/n8n.md +65 -0
- package/templates/agents/pm.md +69 -0
- package/templates/agents/qa.md +66 -0
- package/templates/agents/researcher.md +57 -0
- package/templates/agents/security.md +65 -0
- package/templates/agents/tech-lead.md +75 -0
- package/templates/hooks/guard-base-branch-commit.sh.tmpl +45 -0
- package/templates/hooks/kit-local-status.sh.tmpl +34 -0
- package/templates/hooks/kit_version_check.sh.tmpl +6 -0
- package/templates/hooks/mempal_followup.sh.tmpl +97 -0
- package/templates/hooks/mempal_precompact.sh.tmpl +4 -0
- package/templates/hooks/mempal_save.sh.tmpl +4 -0
- package/templates/hooks/mempal_session_start.sh.tmpl +8 -0
- package/templates/hooks/prepush_gate.sh.tmpl +36 -0
- package/templates/hooks/repo-hygiene.sh.tmpl +72 -0
- package/templates/kit.config.json.tmpl +32 -0
- package/templates/knowledge-INDEX.md.tmpl +12 -0
- package/templates/lib/kit-sigil.sh.tmpl +124 -0
- package/templates/rules/branch-naming.md +104 -0
- package/templates/rules/communication-style.md +22 -0
- package/templates/rules/delegation-brief.md +40 -0
- package/templates/rules/design-routing.md +35 -0
- package/templates/rules/effort-model.md +122 -0
- package/templates/rules/knowledge-base.md +41 -0
- package/templates/rules/mempalace.md +110 -0
- package/templates/rules/plan-output-format.md +58 -0
- package/templates/rules/react-annotate.md +69 -0
- package/templates/rules/risk-tiered-review.md +62 -0
- package/templates/rules/skill-gaps.md +48 -0
- package/templates/rules/task-management.md +42 -0
- package/templates/settings/settings.local.json.tmpl +27 -0
- package/templates/skills/NAMESPACED +13 -0
- package/templates/skills/copywriting/SKILL.md +252 -0
- package/templates/skills/copywriting/references/copy-frameworks.md +344 -0
- package/templates/skills/copywriting/references/natural-transitions.md +272 -0
- package/templates/skills/feature-build-refine/SKILL.md +367 -0
- package/templates/skills/karpathy-guidelines/SKILL.md +69 -0
- package/templates/skills/morning-briefing/SKILL.md +46 -0
- package/templates/skills/speckit/SKILL.md +239 -0
- package/templates/skills/supabase-patterns/SKILL.md +88 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Plan Output Format
|
|
2
|
+
|
|
3
|
+
## Hard rule
|
|
4
|
+
|
|
5
|
+
**When any agent is asked to produce a "plan", the deliverable is a file in `{{PLANS_DIR}}`** (format: `{{PLANS_FORMAT}}`).
|
|
6
|
+
|
|
7
|
+
Applies to: implementation plans, architecture plans, design briefs, roadmaps, milestone
|
|
8
|
+
breakdowns, audit reports, technical specs — anything labeled "plan" or "report".
|
|
9
|
+
|
|
10
|
+
## File convention
|
|
11
|
+
|
|
12
|
+
- Filename: `{{PROJECT_SLUG}}-<role>-<topic>.md` (or `.mdx` if your project renders MDX)
|
|
13
|
+
- Lives in `{{PLANS_DIR}}`
|
|
14
|
+
- Starts with YAML frontmatter:
|
|
15
|
+
|
|
16
|
+
```yaml
|
|
17
|
+
---
|
|
18
|
+
title: '{{PROJECT_NAME}} — <description>'
|
|
19
|
+
role: PM | Designer | Tech Lead | DevOps | Backend | Frontend | QA | Security | Research
|
|
20
|
+
date: YYYY-MM-DD
|
|
21
|
+
version: '1.0'
|
|
22
|
+
status: Draft | In Review | Active | Complete
|
|
23
|
+
subtitle: 'One-sentence description'
|
|
24
|
+
issue: 12 # GitHub issue number (optional)
|
|
25
|
+
tags: [tag1, tag2]
|
|
26
|
+
---
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Deliverables section (required)
|
|
30
|
+
|
|
31
|
+
Every plan must include a `## Deliverables` table listing the PRs that, when all merged, complete it:
|
|
32
|
+
|
|
33
|
+
```md
|
|
34
|
+
## Deliverables
|
|
35
|
+
|
|
36
|
+
| PR | Description | Status |
|
|
37
|
+
| --- | ------------------ | ------- |
|
|
38
|
+
| #28 | Scaffold feature X | ⬜ Open |
|
|
39
|
+
| #29 | UI for feature X | ⬜ Open |
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
This is the completion contract. When all PRs are merged → the plan flips `status:` to
|
|
43
|
+
`Complete` and **stays visible** in `{{PLANS_DIR}}` — there is no archive folder.
|
|
44
|
+
|
|
45
|
+
## Lifecycle
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Draft → Active → Complete (via the status: frontmatter field — file never moves)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
`/kit-task-close` flips the status when closing the parent issue, once every Deliverables PR
|
|
52
|
+
is merged.
|
|
53
|
+
|
|
54
|
+
## Before writing a plan
|
|
55
|
+
|
|
56
|
+
1. Check `{{PLANS_DIR}}` for an existing plan on the same topic
|
|
57
|
+
2. Read project knowledge docs for background
|
|
58
|
+
3. Use the frontmatter + Deliverables skeleton above
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# React UI Annotation — Agentation loop ({{PROJECT_NAME}})
|
|
2
|
+
|
|
3
|
+
> Active because this project ran `/kit-annotate`. It wires the **Agentation** toolbar — an in-app,
|
|
4
|
+
> dev-only React component — to Claude via the `agentation` MCP server. Agentation is third-party
|
|
5
|
+
> (PolyForm Shield 1.0.0, source-available), installed as this project's own dev dependency; the kit
|
|
6
|
+
> vendors none of its code. To remove: delete this file, run `claude mcp remove agentation`, and drop
|
|
7
|
+
> the `<Agentation />` line from the app entry.
|
|
8
|
+
|
|
9
|
+
## What it gives you
|
|
10
|
+
|
|
11
|
+
Click any element in the **running dev app** (toolbar, bottom-right), leave a note with intent +
|
|
12
|
+
severity, and Claude pulls a structured record — CSS selector, position, nearby text, the **React
|
|
13
|
+
component tree**, and a **source file path** — then jumps to the code and fixes it.
|
|
14
|
+
|
|
15
|
+
## Honest limits — state these, don't over-promise
|
|
16
|
+
|
|
17
|
+
- **Dev-only.** The `<Agentation />` toolbar is gated behind a dev check and stripped from production
|
|
18
|
+
builds. Only annotate against the dev server.
|
|
19
|
+
- **Identity is selector + source-path + component name, NOT live prop/state values.** Agentation does
|
|
20
|
+
not serialize prop/state values. To pin the exact code, use the selector / source path / component
|
|
21
|
+
name to **grep** the repo.
|
|
22
|
+
- **React Server Components** render only on the server → a clicked server-rendered node degrades to a
|
|
23
|
+
CSS selector. Client components annotate fully.
|
|
24
|
+
- The MCP payload Claude receives is lighter than the toolbar's **Copy** markdown. If a needed detail
|
|
25
|
+
is missing, ask the user to hit **Copy** in the toolbar and paste it.
|
|
26
|
+
|
|
27
|
+
## The session loop
|
|
28
|
+
|
|
29
|
+
**Default to a batch contract.** Open with: *"Annotate everything you want changed, then say 'done' —
|
|
30
|
+
I'll pull the whole batch and apply the fixes."* Let the user mark up the whole screen and hand off a
|
|
31
|
+
reviewed batch; don't lead with a silent live watch that picks notes up mid-thought.
|
|
32
|
+
|
|
33
|
+
When the user says "done" / "go" / "I left notes" (or runs `/kit-annotate`):
|
|
34
|
+
|
|
35
|
+
1. **Pull** the batch — `agentation_get_all_pending`. (Only use `agentation_watch_annotations`, which
|
|
36
|
+
blocks silently until new notes arrive, if the user **explicitly opts into** hands-free / "watch".)
|
|
37
|
+
2. For **each** annotation:
|
|
38
|
+
- `agentation_acknowledge` — mark it seen (flips the note's state in the toolbar).
|
|
39
|
+
- **Locate the code:** use the source file path if present; otherwise grep the selector / class
|
|
40
|
+
names / component name / nearby text.
|
|
41
|
+
- Make the fix, following this project's build skills and conventions.
|
|
42
|
+
- `agentation_resolve` with a one-line summary of the change — or `agentation_dismiss` with a reason
|
|
43
|
+
if it isn't actionable, or `agentation_reply` to ask a clarifying question.
|
|
44
|
+
3. In hands-free mode only, call `agentation_watch_annotations` again and continue until the user stops.
|
|
45
|
+
|
|
46
|
+
**Set expectations** so the browser side isn't a black box: notes flip **acknowledged → resolved** in
|
|
47
|
+
the toolbar as you work; fixes land via **HMR** — *refresh to see them*; each resolved note carries a
|
|
48
|
+
one-line summary.
|
|
49
|
+
|
|
50
|
+
**Preflight:** the MCP server runs the toolbar's HTTP receiver on **:4747**; it starts with Claude Code
|
|
51
|
+
once registered. If the `agentation_*` tools are missing, restart Claude Code and verify with
|
|
52
|
+
`npx agentation-mcp doctor`. If `agentation_list_sessions` shows **connected but 0 sessions** while the
|
|
53
|
+
user is annotating, the wired `<Agentation endpoint="http://localhost:4747" />` is **missing its
|
|
54
|
+
`endpoint` prop** (toolbar is writing only to `localStorage`) or the tab is stale — fix the wiring /
|
|
55
|
+
reload before continuing.
|
|
56
|
+
|
|
57
|
+
<!-- IF:MEMORY -->
|
|
58
|
+
## On session close
|
|
59
|
+
|
|
60
|
+
Before the closing summary, write a short record to MemPalace wing **`{{WING}}`** (room `problems` or
|
|
61
|
+
`decisions`): which annotations were resolved, the components/files touched, and anything deferred.
|
|
62
|
+
Keeps UI-fix history per project.
|
|
63
|
+
<!-- /IF:MEMORY -->
|
|
64
|
+
|
|
65
|
+
## Scope
|
|
66
|
+
|
|
67
|
+
Wired for **Claude Code**. Other agents (Cursor, Codex, …) can read the same annotations through
|
|
68
|
+
Agentation's own MCP/export — that is Agentation's surface, not the kit's; the kit neither wires nor
|
|
69
|
+
maintains it.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Risk-tiered review — spend human review only where it pays
|
|
2
|
+
|
|
3
|
+
**Human review time is the scarce resource; spend it on risky changes only.** Once the automated
|
|
4
|
+
gates are green, a `risk:low` PR has already passed everything a human reviewer would have checked —
|
|
5
|
+
re-reviewing it by hand is waste. Complements `branch-naming.md` (auto-merge, merge order, risk
|
|
6
|
+
labels); on a review-effort conflict, this rule wins.
|
|
7
|
+
|
|
8
|
+
## The tiering
|
|
9
|
+
|
|
10
|
+
| Tier | Gate state | Review |
|
|
11
|
+
| --------------- | -------------------------------------------------- | ---------------------------------------------------------------------------------------- |
|
|
12
|
+
| **`risk:low`** | the project's gates green (build + typecheck/lint) | **auto-pass** — the pipeline caught what a human would; `pr-automerge` lands it (squash) |
|
|
13
|
+
| **`risk:med`** | gates green | **human review required** — a person reads the diff before merge |
|
|
14
|
+
| **`risk:high`** | gates green | **human review required** — read + reason about blast radius before merge |
|
|
15
|
+
|
|
16
|
+
## Always-human (overrides the tier — never auto-pass)
|
|
17
|
+
|
|
18
|
+
These floor to human review regardless of the `risk:*` label, per existing rules:
|
|
19
|
+
|
|
20
|
+
- **CI / workflow changes** (`.github/workflows/**` and equivalents) — always `risk:high`; CI-token +
|
|
21
|
+
supply-chain blast radius.
|
|
22
|
+
- **Security-touching diffs** — auth, CSP/CORS, secrets, dependency changes (a `security/*` branch is
|
|
23
|
+
always `risk:high`).
|
|
24
|
+
- **Lockfile / dependency-graph changes** — the lockfile + package manifest (`branch-naming.md`
|
|
25
|
+
lockfile rule): one in flight at a time, human-reviewed.
|
|
26
|
+
- **`risk:*` floors to the highest concern in a mixed PR** — never bury a risky change among trivial ones.
|
|
27
|
+
|
|
28
|
+
## The gates (what "green" means)
|
|
29
|
+
|
|
30
|
+
The gates are whatever the project runs to prove a change is sound — typically:
|
|
31
|
+
|
|
32
|
+
- **A successful build** (the deploy / build step).
|
|
33
|
+
- **Local `typecheck` + `lint`**, run before push.
|
|
34
|
+
|
|
35
|
+
A `risk:low` auto-pass is valid **only** when the project's gates are green. A red gate = not eligible,
|
|
36
|
+
no exceptions.
|
|
37
|
+
|
|
38
|
+
## Why
|
|
39
|
+
|
|
40
|
+
- An agent-driven swarm produces more PRs than a human can hand-review; uniform review is the bottleneck.
|
|
41
|
+
- The pipeline (build + typecheck + lint) is a deterministic reviewer for mechanical correctness — let
|
|
42
|
+
it own the low-risk tier. Reserve human judgment for the changes where judgment is the actual value:
|
|
43
|
+
design decisions, data/graph shape, security, blast radius.
|
|
44
|
+
- This is the merge-side counterpart to fanning work out across parallel agents — fan-out the work in,
|
|
45
|
+
tier the review out.
|
|
46
|
+
|
|
47
|
+
## Enforcement
|
|
48
|
+
|
|
49
|
+
- `pr-automerge` already encodes the mechanism: native squash auto-merge fires **only** on `risk:low`
|
|
50
|
+
PRs that aren't `blocked`/draft/`hold` (`branch-naming.md`). This rule is the **policy** that
|
|
51
|
+
blesses that behavior as the default, not an exception.
|
|
52
|
+
- Stop an auto-pass you want a human on: add the **`hold`** label or mark the PR **draft**.
|
|
53
|
+
- A `risk:med`/`risk:high` PR merged without a human read is a process violation — re-tier or review.
|
|
54
|
+
|
|
55
|
+
## Scope — ad-hoc PRs, not approved-plan execution
|
|
56
|
+
|
|
57
|
+
These tiers govern **ad-hoc** PRs (a one-off change a human is about to merge). They do **not** gate
|
|
58
|
+
execution of an **already-approved plan**: when the captain (`kit-autopilot --plan`) drives an
|
|
59
|
+
approved plan, it **merges each planned wave itself** and continues — a `risk:med` change the plan
|
|
60
|
+
already blessed is not re-gated per-PR. The captain pings the human only on a **genuine blocker** (a
|
|
61
|
+
surprise always-human change not implied by the plan — see the `kit-autopilot` skill,
|
|
62
|
+
_Established-plan autonomy_). Don't cite these tiers to stall an approved plan.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Smart skill-gap detection ({{PROJECT_NAME}})
|
|
2
|
+
|
|
3
|
+
Surface a missing capability **before** starting work — but only when it's genuinely non-obvious, and
|
|
4
|
+
without nagging. Prompt for the **special and new**; stay silent on the **routine**.
|
|
5
|
+
|
|
6
|
+
## When to prompt (all must hold)
|
|
7
|
+
|
|
8
|
+
1. The task plausibly needs a **specific skill** — a framework/tool workflow, a design system, a data
|
|
9
|
+
or automation capability — that is **not available** in this session and **not wired** to the agent
|
|
10
|
+
that would do the work.
|
|
11
|
+
2. The need is **non-straightforward**: a special or new feature, not routine work you can already do
|
|
12
|
+
well with general ability plus the skills already wired.
|
|
13
|
+
3. You have **not already asked** about this gap in this project (see anti-repeat).
|
|
14
|
+
|
|
15
|
+
If a capable skill is already available/wired → just use it, don't ask. If the work is routine → don't
|
|
16
|
+
ask. When unsure whether a gap is "obvious," lean toward **not** interrupting.
|
|
17
|
+
|
|
18
|
+
## How to prompt (once, up front, before starting)
|
|
19
|
+
|
|
20
|
+
State the gap in one line, then offer options via `AskUserQuestion`:
|
|
21
|
+
|
|
22
|
+
- **Pick a skill** — list the relevant skills actually available (the session's skill list,
|
|
23
|
+
`~/.claude/skills/*`, installed plugin skills; discover with the `find-skills` skill) for the user to
|
|
24
|
+
wire or use.
|
|
25
|
+
- **Provide one** — the user points to or supplies a skill / doc / MCP server.
|
|
26
|
+
- **Proceed without** — continue with general ability.
|
|
27
|
+
|
|
28
|
+
Route any wiring through **`/kit-customize`** (it attaches skills/tools to agents). Batch multiple gaps
|
|
29
|
+
for one task into a **single** prompt at the start — never drip-feed interruptions mid-task.
|
|
30
|
+
|
|
31
|
+
## Anti-repeat (don't nag)
|
|
32
|
+
|
|
33
|
+
Record outcomes in `.claude/kit.config.json` under `skillPrompts`:
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
"skillPrompts": { "asked": ["<gap-key>"], "declined": ["<gap-key>"], "wired": ["<skill-name>"] }
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
- Before prompting, check `skillPrompts`. If the gap is already in `asked`, `declined`, or covered by
|
|
40
|
+
`wired`, **do not ask again** — proceed silently.
|
|
41
|
+
- A `gap-key` is a short, stable slug for the capability (e.g. `gsap-animation`, `stripe-billing`,
|
|
42
|
+
`playwright-e2e`).
|
|
43
|
+
- Ask **at most once per gap per project**. A declined gap stays declined unless the user reopens it.
|
|
44
|
+
|
|
45
|
+
## Principle
|
|
46
|
+
|
|
47
|
+
One good question up front beats five mid-task interruptions. Detecting a real, non-obvious capability
|
|
48
|
+
gap early — and remembering the answer — is the whole point.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Task Management
|
|
2
|
+
|
|
3
|
+
## Source of truth
|
|
4
|
+
|
|
5
|
+
- **GitHub issues** in `{{GH_REPO}}`<!-- IF:PROJECTS_V2 --> + the Projects v2 board (`https://github.com/users/{{GH_OWNER}}/projects/{{PROJECT_NUMBER}}`)<!-- /IF:PROJECTS_V2 -->
|
|
6
|
+
- **Never** maintain task lists in markdown files. Use `gh issue` + the `task-*` skills so state stays in one place.
|
|
7
|
+
- Always re-fetch from `gh` — never trust a stale session snapshot.
|
|
8
|
+
|
|
9
|
+
## Roles
|
|
10
|
+
|
|
11
|
+
Every issue carries a `role:` label. Active roles for this project: {{ROLES_HUMAN}}.
|
|
12
|
+
|
|
13
|
+
The role determines which agent owns the work. Spawn that agent for the actual execution.
|
|
14
|
+
|
|
15
|
+
## Kinds
|
|
16
|
+
|
|
17
|
+
`task` · `plan` · `adr` · `scaffold` · `spike` — drives the branch prefix `<kind>/<N>-<slug>`.
|
|
18
|
+
|
|
19
|
+
## Priorities
|
|
20
|
+
|
|
21
|
+
`p1` (now / blocking) · `p2` (next) · `p3` (later).
|
|
22
|
+
|
|
23
|
+
## Milestones
|
|
24
|
+
|
|
25
|
+
{{MILESTONES_HUMAN}}
|
|
26
|
+
|
|
27
|
+
## The loop
|
|
28
|
+
|
|
29
|
+
1. `/kit-task-sync` — see the board, pick an unblocked issue
|
|
30
|
+
2. `/kit-task-start <N>` — branch from main, mark In Progress
|
|
31
|
+
3. Do the work (spawn the owning agent)
|
|
32
|
+
4. `/kit-task-pr <N>` — commit, push, open PR
|
|
33
|
+
5. `/kit-task-pr-merge` — squash-merge, back to main
|
|
34
|
+
6. `/kit-task-close <N>` — close issue<!-- IF:PLANS -->, archive plan if all deliverables merged<!-- /IF:PLANS -->
|
|
35
|
+
|
|
36
|
+
## Rules
|
|
37
|
+
|
|
38
|
+
- One PR per issue — no monster PRs. **Exception: a coupled migration/DDL chain ships as ONE PR (and ideally one issue)** — don't fragment a sequenced migration set into a PR-per-file. Split only for genuinely independent migrations or a step needing its own review gate (data backfill, RLS behavior change).
|
|
39
|
+
- PR title = issue title · body includes `Closes #N`
|
|
40
|
+
- Labels + milestone inherited from the issue
|
|
41
|
+
- Never file an issue without confirming title + role + priority with {{OWNER_NAME}}
|
|
42
|
+
- Never create new label families on the fly — fail loudly if a kind/priority is unknown
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(gh issue *)",
|
|
5
|
+
"Bash(gh pr *)",
|
|
6
|
+
"Bash(gh label *)",
|
|
7
|
+
"Bash(gh api *)",
|
|
8
|
+
"Bash(gh repo *)",
|
|
9
|
+
"Bash(gh auth status)",
|
|
10
|
+
"Bash(git checkout *)",
|
|
11
|
+
"Bash(git switch *)",
|
|
12
|
+
"Bash(git branch *)",
|
|
13
|
+
"Bash(git add *)",
|
|
14
|
+
"Bash(git commit *)",
|
|
15
|
+
"Bash(git push *)",
|
|
16
|
+
"Bash(git fetch *)",
|
|
17
|
+
"Bash(git pull *)",
|
|
18
|
+
"Bash(git rebase *)",
|
|
19
|
+
"Bash(git status)",
|
|
20
|
+
"Bash(git log *)",
|
|
21
|
+
"Bash(./scripts/task-sync.sh *)",
|
|
22
|
+
"Bash(./scripts/setup-labels.sh)",
|
|
23
|
+
"Bash(./scripts/setup-milestones.sh)",
|
|
24
|
+
"Bash(./scripts/capture-project-ids.sh)"
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Kit-namespaced skills — these take the project's `skillPrefix` (e.g. kit-) on scaffold/upgrade.
|
|
2
|
+
# The kit-workflow skills only; content skills (morning-briefing, karpathy-guidelines, speckit,
|
|
3
|
+
# feature-build-refine, supabase-patterns) are intentionally absent and stay bare.
|
|
4
|
+
# One skill name per line; blank lines and #-comments ignored. See scripts/init.sh (_is_namespaced).
|
|
5
|
+
#
|
|
6
|
+
# v2 (#370 + #853): the task-* AND effort-* lifecycle skills are no longer SCAFFOLDED per-project —
|
|
7
|
+
# the plugin provides them directly as `kit-task-*` / `kit-effort-*` under skills/, resolved via
|
|
8
|
+
# ${CLAUDE_PLUGIN_ROOT}. No template ships for them, and no profile lists them, so /kit-init and
|
|
9
|
+
# /kit-update never (re)scaffold a bare-name duplicate (idempotency: no /kit-update resurrection).
|
|
10
|
+
# This file is now empty of workflow skills; it stays so the upgrade rename map
|
|
11
|
+
# (kit.config upgrade.renamed) and _is_namespaced keep reading cleanly for projects that previously
|
|
12
|
+
# scaffolded kit-task-* / kit-effort-* — their existing scaffolded copies are preserved, the
|
|
13
|
+
# plugin-direct skills take over.
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: copywriting
|
|
3
|
+
description: When the user wants to write, rewrite, or improve marketing copy for any page — including homepage, landing pages, pricing pages, feature pages, about pages, or product pages. Also use when the user says "write copy for," "improve this copy," "rewrite this page," "marketing copy," "headline help," "CTA copy," "value proposition," "tagline," "subheadline," "hero section copy," "above the fold," "this copy is weak," "make this more compelling," or "help me describe my product." Use this whenever someone is working on website text that needs to persuade or convert. For email copy, see emails. For popup copy, see popups. For editing existing copy, see copy-editing.
|
|
4
|
+
metadata:
|
|
5
|
+
version: 2.0.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Copywriting
|
|
9
|
+
|
|
10
|
+
You are an expert conversion copywriter. Your goal is to write marketing copy that is clear, compelling, and drives action.
|
|
11
|
+
|
|
12
|
+
## Before Writing
|
|
13
|
+
|
|
14
|
+
**Check for product marketing context first:**
|
|
15
|
+
If `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
|
|
16
|
+
|
|
17
|
+
Gather this context (ask if not provided):
|
|
18
|
+
|
|
19
|
+
### 1. Page Purpose
|
|
20
|
+
- What type of page? (homepage, landing page, pricing, feature, about)
|
|
21
|
+
- What is the ONE primary action you want visitors to take?
|
|
22
|
+
|
|
23
|
+
### 2. Audience
|
|
24
|
+
- Who is the ideal customer?
|
|
25
|
+
- What problem are they trying to solve?
|
|
26
|
+
- What objections or hesitations do they have?
|
|
27
|
+
- What language do they use to describe their problem?
|
|
28
|
+
|
|
29
|
+
### 3. Product/Offer
|
|
30
|
+
- What are you selling or offering?
|
|
31
|
+
- What makes it different from alternatives?
|
|
32
|
+
- What's the key transformation or outcome?
|
|
33
|
+
- Any proof points (numbers, testimonials, case studies)?
|
|
34
|
+
|
|
35
|
+
### 4. Context
|
|
36
|
+
- Where is traffic coming from? (ads, organic, email)
|
|
37
|
+
- What do visitors already know before arriving?
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Copywriting Principles
|
|
42
|
+
|
|
43
|
+
### Clarity Over Cleverness
|
|
44
|
+
If you have to choose between clear and creative, choose clear.
|
|
45
|
+
|
|
46
|
+
### Benefits Over Features
|
|
47
|
+
Features: What it does. Benefits: What that means for the customer.
|
|
48
|
+
|
|
49
|
+
### Specificity Over Vagueness
|
|
50
|
+
- Vague: "Save time on your workflow"
|
|
51
|
+
- Specific: "Cut your weekly reporting from 4 hours to 15 minutes"
|
|
52
|
+
|
|
53
|
+
### Customer Language Over Company Language
|
|
54
|
+
Use words your customers use. Mirror voice-of-customer from reviews, interviews, support tickets.
|
|
55
|
+
|
|
56
|
+
### One Idea Per Section
|
|
57
|
+
Each section should advance one argument. Build a logical flow down the page.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Writing Style Rules
|
|
62
|
+
|
|
63
|
+
### Core Principles
|
|
64
|
+
|
|
65
|
+
1. **Simple over complex** — "Use" not "utilize," "help" not "facilitate"
|
|
66
|
+
2. **Specific over vague** — Avoid "streamline," "optimize," "innovative"
|
|
67
|
+
3. **Active over passive** — "We generate reports" not "Reports are generated"
|
|
68
|
+
4. **Confident over qualified** — Remove "almost," "very," "really"
|
|
69
|
+
5. **Show over tell** — Describe the outcome instead of using adverbs
|
|
70
|
+
6. **Honest over sensational** — Fabricated statistics or testimonials erode trust and create legal liability
|
|
71
|
+
|
|
72
|
+
### Quick Quality Check
|
|
73
|
+
|
|
74
|
+
- Jargon that could confuse outsiders?
|
|
75
|
+
- Sentences trying to do too much?
|
|
76
|
+
- Passive voice constructions?
|
|
77
|
+
- Exclamation points? (remove them)
|
|
78
|
+
- Marketing buzzwords without substance?
|
|
79
|
+
|
|
80
|
+
For thorough line-by-line review, use the **copy-editing** skill after your draft.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Best Practices
|
|
85
|
+
|
|
86
|
+
### Be Direct
|
|
87
|
+
Get to the point. Don't bury the value in qualifications.
|
|
88
|
+
|
|
89
|
+
❌ Slack lets you share files instantly, from documents to images, directly in your conversations
|
|
90
|
+
|
|
91
|
+
✅ Need to share a screenshot? Send as many documents, images, and audio files as your heart desires.
|
|
92
|
+
|
|
93
|
+
### Use Rhetorical Questions
|
|
94
|
+
Questions engage readers and make them think about their own situation.
|
|
95
|
+
- "Hate returning stuff to Amazon?"
|
|
96
|
+
- "Tired of chasing approvals?"
|
|
97
|
+
|
|
98
|
+
### Use Analogies When Helpful
|
|
99
|
+
Analogies make abstract concepts concrete and memorable.
|
|
100
|
+
|
|
101
|
+
### Pepper in Humor (When Appropriate)
|
|
102
|
+
Puns and wit make copy memorable—but only if it fits the brand and doesn't undermine clarity.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Page Structure Framework
|
|
107
|
+
|
|
108
|
+
### Above the Fold
|
|
109
|
+
|
|
110
|
+
**Headline**
|
|
111
|
+
- Your single most important message
|
|
112
|
+
- Communicate core value proposition
|
|
113
|
+
- Specific > generic
|
|
114
|
+
|
|
115
|
+
**Example formulas:**
|
|
116
|
+
- "{Achieve outcome} without {pain point}"
|
|
117
|
+
- "The {category} for {audience}"
|
|
118
|
+
- "Never {unpleasant event} again"
|
|
119
|
+
- "{Question highlighting main pain point}"
|
|
120
|
+
|
|
121
|
+
**For comprehensive headline formulas**: See [references/copy-frameworks.md](references/copy-frameworks.md)
|
|
122
|
+
|
|
123
|
+
**For natural transition phrases**: See [references/natural-transitions.md](references/natural-transitions.md)
|
|
124
|
+
|
|
125
|
+
**Subheadline**
|
|
126
|
+
- Expands on headline
|
|
127
|
+
- Adds specificity
|
|
128
|
+
- 1-2 sentences max
|
|
129
|
+
|
|
130
|
+
**Primary CTA**
|
|
131
|
+
- Action-oriented button text
|
|
132
|
+
- Communicate what they get: "Start Free Trial" > "Sign Up"
|
|
133
|
+
|
|
134
|
+
### Core Sections
|
|
135
|
+
|
|
136
|
+
| Section | Purpose |
|
|
137
|
+
|---------|---------|
|
|
138
|
+
| Social Proof | Build credibility (logos, stats, testimonials) |
|
|
139
|
+
| Problem/Pain | Show you understand their situation |
|
|
140
|
+
| Solution/Benefits | Connect to outcomes (3-5 key benefits) |
|
|
141
|
+
| How It Works | Reduce perceived complexity (3-4 steps) |
|
|
142
|
+
| Objection Handling | FAQ, comparisons, guarantees |
|
|
143
|
+
| Final CTA | Recap value, repeat CTA, risk reversal |
|
|
144
|
+
|
|
145
|
+
**For detailed section types and page templates**: See [references/copy-frameworks.md](references/copy-frameworks.md)
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## CTA Copy Guidelines
|
|
150
|
+
|
|
151
|
+
**Weak CTAs (avoid):**
|
|
152
|
+
- Submit, Sign Up, Learn More, Click Here, Get Started
|
|
153
|
+
|
|
154
|
+
**Strong CTAs (use):**
|
|
155
|
+
- Start Free Trial
|
|
156
|
+
- Get [Specific Thing]
|
|
157
|
+
- See [Product] in Action
|
|
158
|
+
- Create Your First [Thing]
|
|
159
|
+
- Download the Guide
|
|
160
|
+
|
|
161
|
+
**Formula:** [Action Verb] + [What They Get] + [Qualifier if needed]
|
|
162
|
+
|
|
163
|
+
Examples:
|
|
164
|
+
- "Start My Free Trial"
|
|
165
|
+
- "Get the Complete Checklist"
|
|
166
|
+
- "See Pricing for My Team"
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Page-Specific Guidance
|
|
171
|
+
|
|
172
|
+
### Homepage
|
|
173
|
+
- Serve multiple audiences without being generic
|
|
174
|
+
- Lead with broadest value proposition
|
|
175
|
+
- Provide clear paths for different visitor intents
|
|
176
|
+
|
|
177
|
+
### Landing Page
|
|
178
|
+
- Single message, single CTA
|
|
179
|
+
- Match headline to ad/traffic source
|
|
180
|
+
- Complete argument on one page
|
|
181
|
+
|
|
182
|
+
### Pricing Page
|
|
183
|
+
- Help visitors choose the right plan
|
|
184
|
+
- Address "which is right for me?" anxiety
|
|
185
|
+
- Make recommended plan obvious
|
|
186
|
+
|
|
187
|
+
### Feature Page
|
|
188
|
+
- Connect feature → benefit → outcome
|
|
189
|
+
- Show use cases and examples
|
|
190
|
+
- Clear path to try or buy
|
|
191
|
+
|
|
192
|
+
### About Page
|
|
193
|
+
- Tell the story of why you exist
|
|
194
|
+
- Connect mission to customer benefit
|
|
195
|
+
- Still include a CTA
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## Voice and Tone
|
|
200
|
+
|
|
201
|
+
Before writing, establish:
|
|
202
|
+
|
|
203
|
+
**Formality level:**
|
|
204
|
+
- Casual/conversational
|
|
205
|
+
- Professional but friendly
|
|
206
|
+
- Formal/enterprise
|
|
207
|
+
|
|
208
|
+
**Brand personality:**
|
|
209
|
+
- Playful or serious?
|
|
210
|
+
- Bold or understated?
|
|
211
|
+
- Technical or accessible?
|
|
212
|
+
|
|
213
|
+
Maintain consistency, but adjust intensity:
|
|
214
|
+
- Headlines can be bolder
|
|
215
|
+
- Body copy should be clearer
|
|
216
|
+
- CTAs should be action-oriented
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Output Format
|
|
221
|
+
|
|
222
|
+
When writing copy, provide:
|
|
223
|
+
|
|
224
|
+
### Page Copy
|
|
225
|
+
Organized by section:
|
|
226
|
+
- Headline, Subheadline, CTA
|
|
227
|
+
- Section headers and body copy
|
|
228
|
+
- Secondary CTAs
|
|
229
|
+
|
|
230
|
+
### Annotations
|
|
231
|
+
For key elements, explain:
|
|
232
|
+
- Why you made this choice
|
|
233
|
+
- What principle it applies
|
|
234
|
+
|
|
235
|
+
### Alternatives
|
|
236
|
+
For headlines and CTAs, provide 2-3 options:
|
|
237
|
+
- Option A: [copy] — [rationale]
|
|
238
|
+
- Option B: [copy] — [rationale]
|
|
239
|
+
|
|
240
|
+
### Meta Content (if relevant)
|
|
241
|
+
- Page title (for SEO)
|
|
242
|
+
- Meta description
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Related Skills
|
|
247
|
+
|
|
248
|
+
- **copy-editing**: For polishing existing copy (use after your draft)
|
|
249
|
+
- **cro**: If page structure/strategy needs work, not just copy
|
|
250
|
+
- **emails**: For email copywriting
|
|
251
|
+
- **popups**: For popup and modal copy
|
|
252
|
+
- **ab-testing**: To test copy variations
|