@event4u/agent-config 2.18.0 โ 2.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent-src/commands/agent-status.md +29 -0
- package/.agent-src/commands/onboard.md +221 -81
- package/.agent-src/commands/refine-ticket.md +3 -0
- package/.agent-src/packs/README.md +49 -0
- package/.agent-src/packs/agency-delivery.yml +63 -0
- package/.agent-src/packs/content-engine.yml +53 -0
- package/.agent-src/packs/founder-mvp.yml +51 -0
- package/.agent-src/personas/README.md +8 -0
- package/.agent-src/presets/README.md +26 -0
- package/.agent-src/presets/balanced.yml +34 -0
- package/.agent-src/presets/fast.yml +31 -0
- package/.agent-src/presets/strict.yml +38 -0
- package/.agent-src/profiles/README.md +29 -0
- package/.agent-src/profiles/agency.yml +27 -0
- package/.agent-src/profiles/content_creator.yml +25 -0
- package/.agent-src/profiles/developer.yml +26 -0
- package/.agent-src/profiles/finance.yml +24 -0
- package/.agent-src/profiles/founder.yml +25 -0
- package/.agent-src/profiles/ops.yml +25 -0
- package/.agent-src/rules/no-cheap-questions.md +25 -17
- package/.agent-src/skills/adr-create/SKILL.md +78 -68
- package/.agent-src/skills/refine-ticket/SKILL.md +3 -0
- package/.agent-src/skills/subagent-orchestration/SKILL.md +33 -0
- package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/.agent-src/templates/skill-archive-note.md +101 -0
- package/.agent-src/user-types/README.md +124 -0
- package/.agent-src/user-types/_template/user-type.md +95 -0
- package/.agent-src/user-types/galabau-field-crew.md +100 -0
- package/.agent-src/user-types/metalworking-shop.md +105 -0
- package/.agent-src/user-types/truck-driver.md +113 -0
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +91 -30
- package/README.md +68 -72
- package/config/agent-settings.template.yml +22 -0
- package/docs/adrs/caveman/0001-default-off-until-bench.md +93 -0
- package/docs/adrs/caveman/README.md +9 -0
- package/docs/adrs/cost/0001-hard-stop-hook.md +114 -0
- package/docs/adrs/cost/README.md +9 -0
- package/docs/adrs/memory/0001-consumer-side-snapshot.md +111 -0
- package/docs/adrs/memory/README.md +9 -0
- package/docs/adrs/router/0001-three-tier-routing.md +119 -0
- package/docs/adrs/router/README.md +9 -0
- package/docs/adrs/schema/0001-json-schema-frontmatter.md +102 -0
- package/docs/adrs/schema/README.md +9 -0
- package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +99 -0
- package/docs/adrs/smoke/README.md +9 -0
- package/docs/architecture/current-onboard-baseline.md +126 -0
- package/docs/architecture/current-safety-behavior.md +137 -0
- package/docs/archive/CHANGELOG-pre-2.16.0.md +48 -0
- package/docs/contracts/adr-layout.md +108 -0
- package/docs/contracts/adr-mcp-runtime.md +128 -0
- package/docs/contracts/adr-user-types-axis.md +127 -0
- package/docs/contracts/benchmark-corpus-spec.md +97 -0
- package/docs/contracts/benchmark-report-schema.md +111 -0
- package/docs/contracts/command-clusters.md +1 -0
- package/docs/contracts/command-taxonomy.md +137 -0
- package/docs/contracts/compression-default-kill-criterion.md +69 -0
- package/docs/contracts/config-presets.md +144 -0
- package/docs/contracts/cost-dashboard.md +143 -0
- package/docs/contracts/cost-enforcement.md +134 -0
- package/docs/contracts/file-ownership-matrix.json +0 -7
- package/docs/contracts/mcp-tool-inventory.md +53 -0
- package/docs/contracts/measurement-baseline.md +102 -0
- package/docs/contracts/namespace.md +125 -0
- package/docs/contracts/profile-system.md +142 -0
- package/docs/contracts/safety-model.md +129 -0
- package/docs/contracts/smoke-contracts.md +144 -0
- package/docs/contracts/user-type-schema.md +146 -0
- package/docs/contracts/workflow-packs.md +121 -0
- package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +132 -0
- package/docs/decisions/INDEX.md +1 -0
- package/docs/featured-commands.md +27 -0
- package/docs/parity/bench-ruflo.json +58 -0
- package/docs/parity/bench.json +41 -0
- package/docs/parity/ruflo.md +46 -0
- package/docs/profiles.md +91 -0
- package/docs/recruits/_template.md +81 -0
- package/package.json +1 -1
- package/scripts/_cli/cmd_explain.py +250 -0
- package/scripts/_lib/bench_cost.py +138 -0
- package/scripts/_lib/bench_quality.py +118 -0
- package/scripts/_lib/bench_report.py +150 -0
- package/scripts/agent-config +13 -0
- package/scripts/audit_adr_coverage.py +175 -0
- package/scripts/audit_mcp_tools.py +146 -0
- package/scripts/bench_baseline_ready.py +108 -0
- package/scripts/bench_drift_check.py +151 -0
- package/scripts/bench_per_tool.py +216 -0
- package/scripts/bench_run.py +155 -0
- package/scripts/compress.py +48 -2
- package/scripts/config/__init__.py +9 -0
- package/scripts/config/presets.py +206 -0
- package/scripts/config/profiles.py +173 -0
- package/scripts/cost/budget.mjs +73 -12
- package/scripts/cost/preflight.mjs +89 -0
- package/scripts/lint_archived_skills.py +143 -0
- package/scripts/lint_bench_corpus.py +161 -0
- package/scripts/lint_namespace.py +135 -0
- package/scripts/schemas/user-type.schema.json +35 -0
- package/scripts/skill_linter.py +139 -4
- package/scripts/skill_overlap.py +204 -0
- package/scripts/skill_tools/audit_user_type_coverage.py +148 -0
- package/scripts/skill_usage_collect.py +191 -0
- package/scripts/skill_usage_report.py +162 -0
- package/scripts/smoke/kernel.sh +101 -0
- package/scripts/smoke/router.sh +129 -0
- package/scripts/smoke/schema.sh +71 -0
- package/scripts/smoke/skills.sh +101 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
stability: beta
|
|
3
|
+
keep-beta-until: 2026-08-12
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Workflow packs
|
|
7
|
+
|
|
8
|
+
> **Status:** beta โ first draft 2026-05-16 (Phase 2 Item 7 of
|
|
9
|
+
> `step-15-product-refinement`).
|
|
10
|
+
|
|
11
|
+
A **workflow pack** bundles a `(profile + preset + command-set +
|
|
12
|
+
skill-allowlist)` combination into a single YAML so a user can adopt
|
|
13
|
+
the full opinionated stance for their role without picking five
|
|
14
|
+
independent settings.
|
|
15
|
+
|
|
16
|
+
Packs do **not** introduce new commands, skills, or rules. They are
|
|
17
|
+
a **composition contract** โ every reference must resolve to an
|
|
18
|
+
existing artefact that has already passed its own contract / linter
|
|
19
|
+
gates.
|
|
20
|
+
|
|
21
|
+
## Schema
|
|
22
|
+
|
|
23
|
+
```yaml
|
|
24
|
+
# .agent-src.uncompressed/packs/<pack-id>.yml
|
|
25
|
+
pack:
|
|
26
|
+
id: <pack-id> # kebab-case, file name without .yml
|
|
27
|
+
audience:
|
|
28
|
+
label: "<human-readable>"
|
|
29
|
+
one_liner: "<= 120 chars, what the pack does for the user>"
|
|
30
|
+
composition:
|
|
31
|
+
profile_id: <profile.id> # MUST exist in profiles/
|
|
32
|
+
preset_id: <preset.id> # MUST exist in presets/
|
|
33
|
+
surface:
|
|
34
|
+
commands_allowed: # โค 12 โ slash-command names without leading slash
|
|
35
|
+
- <command>
|
|
36
|
+
skills_allowed: # โค 15 โ skill IDs from skills-catalog
|
|
37
|
+
- <skill>
|
|
38
|
+
personas: # โค 4 โ persona IDs from personas/
|
|
39
|
+
- <persona>
|
|
40
|
+
rationale: # why this combination, not free-form notes
|
|
41
|
+
why_this_profile: "<one paragraph>"
|
|
42
|
+
why_this_preset: "<one paragraph>"
|
|
43
|
+
why_these_commands: "<one paragraph>"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Field semantics
|
|
47
|
+
|
|
48
|
+
| Field | Type | Required | Notes |
|
|
49
|
+
|---|---|:-:|---|
|
|
50
|
+
| `pack.id` | string | yes | Matches file stem. No collision with `profile.id` or `preset.id`. |
|
|
51
|
+
| `composition.profile_id` | string | yes | Override applied to the chain documented in [`profile-system`](profile-system.md). Pack-supplied id wins over `.agent-settings.yml` only when the user explicitly opts in via `/onboard --pack <id>`. |
|
|
52
|
+
| `composition.preset_id` | string | yes | Override applied to the chain documented in [`config-presets`](config-presets.md). Same opt-in semantics. |
|
|
53
|
+
| `surface.commands_allowed` | list[string] | yes | Cap = **12**. Items must appear in [`command-clusters`](command-clusters.md). The pack does **not** disable other commands โ the cap is for the wizard's first-screen rendering, not enforcement. |
|
|
54
|
+
| `surface.skills_allowed` | list[string] | yes | Cap = **15**. Items must appear in `docs/skills-catalog.md`. Same render-only semantics. |
|
|
55
|
+
| `surface.personas` | list[string] | yes | Cap = **4**. Items must appear in `.agent-src.uncompressed/personas/`. |
|
|
56
|
+
| `rationale.*` | string | yes | Forces every pack to justify its composition in plain prose; reviewed at PR time, not at runtime. |
|
|
57
|
+
|
|
58
|
+
## Resolution chain
|
|
59
|
+
|
|
60
|
+
Packs are an **opt-in layer above the profile + preset chain**. The
|
|
61
|
+
loader at `scripts/config/packs.py` (Phase 2 deliverable โ not yet
|
|
62
|
+
shipped) reads the pack iff:
|
|
63
|
+
|
|
64
|
+
1. `--pack <id>` flag passed to `/onboard` or `agent-config init`, **or**
|
|
65
|
+
2. `pack.id` set in `.agent-settings.yml` (written by `/onboard --pack`).
|
|
66
|
+
|
|
67
|
+
When a pack is active:
|
|
68
|
+
|
|
69
|
+
- `composition.profile_id` is passed to `profiles.load()` as
|
|
70
|
+
`pack_profile_id` (already wired โ see `scripts/config/profiles.py`).
|
|
71
|
+
- `composition.preset_id` is passed to `presets.load()` analogously.
|
|
72
|
+
- `surface.*` lists override the rendered command / skill lists in
|
|
73
|
+
`/onboard` and in the README "Six entry paths" surface **for the
|
|
74
|
+
duration of the active pack only**.
|
|
75
|
+
|
|
76
|
+
Removing a pack (`/onboard --pack none`) reverts to the underlying
|
|
77
|
+
profile + preset defaults; **no data is lost**.
|
|
78
|
+
|
|
79
|
+
## Validation
|
|
80
|
+
|
|
81
|
+
`scripts/lint_packs.py` (Phase 2 deliverable โ not yet shipped) fails
|
|
82
|
+
CI on:
|
|
83
|
+
|
|
84
|
+
- Missing required field.
|
|
85
|
+
- `profile_id` / `preset_id` / `commands_allowed` / `skills_allowed`
|
|
86
|
+
/ `personas` referencing an artefact that does not exist.
|
|
87
|
+
- Cap violation (commands > 12, skills > 15, personas > 4).
|
|
88
|
+
- `pack.id` collision with another pack, profile, or preset id.
|
|
89
|
+
|
|
90
|
+
Until the linter lands, packs are reviewed by hand at PR time against
|
|
91
|
+
this schema.
|
|
92
|
+
|
|
93
|
+
## What packs do **not** do
|
|
94
|
+
|
|
95
|
+
- **Do not** declare new commands. Use [`command-clusters`](command-clusters.md).
|
|
96
|
+
- **Do not** modify rules. Use the kernel-rule edit process.
|
|
97
|
+
- **Do not** override safety floors. Domain-safety rules
|
|
98
|
+
(`.agent-src.uncompressed/rules/domain-safety-*.md`) apply
|
|
99
|
+
unconditionally โ packs cannot widen the deny-list.
|
|
100
|
+
- **Do not** ship telemetry or usage hints. Packs are pure composition.
|
|
101
|
+
|
|
102
|
+
## Seed packs
|
|
103
|
+
|
|
104
|
+
Three packs ship at Phase 2 Item 7 close:
|
|
105
|
+
|
|
106
|
+
| Pack id | Profile | Preset | One-liner |
|
|
107
|
+
|---|---|---|---|
|
|
108
|
+
| `founder-mvp` | `founder` | `fast` | Ship the MVP and the pitch deck in the same week. |
|
|
109
|
+
| `content-engine` | `content_creator` | `balanced` | Editorial calendar, brand voice, and ghostwriter on one loop. |
|
|
110
|
+
| `agency-delivery` | `agency` | `strict` | Multi-client refine โ estimate โ deliver with audit-grade trace. |
|
|
111
|
+
|
|
112
|
+
Each pack lives at `.agent-src.uncompressed/packs/<id>.yml` and is
|
|
113
|
+
covered by the validation rules above.
|
|
114
|
+
|
|
115
|
+
## See also
|
|
116
|
+
|
|
117
|
+
- [`profile-system`](profile-system.md) โ profile axis (audience defaults)
|
|
118
|
+
- [`config-presets`](config-presets.md) โ preset axis (risk appetite)
|
|
119
|
+
- [`command-clusters`](command-clusters.md) โ verb axis (invocation)
|
|
120
|
+
- [`command-taxonomy`](command-taxonomy.md) โ discoverability axis
|
|
121
|
+
- `step-15-product-refinement` ยง Phase 2 Item 7
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
adr: 010
|
|
3
|
+
status: proposed
|
|
4
|
+
date: 2026-05-16
|
|
5
|
+
decision: profile-pack-preset-boundary
|
|
6
|
+
supersedes: โ
|
|
7
|
+
superseded_by: โ
|
|
8
|
+
phase: v2.x ยท step-15 Phase 1 prerequisite
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# ADR-010 โ Profile / Pack / Preset Boundary
|
|
12
|
+
|
|
13
|
+
## Status
|
|
14
|
+
|
|
15
|
+
**Proposed** ยท 2026-05-16 ยท pending Phase 1 of
|
|
16
|
+
[`agents/roadmaps/step-15-product-refinement.md`](../../agents/roadmaps/step-15-product-refinement.md).
|
|
17
|
+
Council v3 action #2 (`agents/council-responses/2026-05-16-step-15-product-refinement-v3.json`): <!-- council-ref-allowed: ADR decision-trace to originating council response -->
|
|
18
|
+
**"Profile / Pack / Preset boundary is undefined; Phase 2 will duplicate
|
|
19
|
+
Phase 1 abstractions"**. Promoted from Phase 2 to Phase 1 prerequisite โ
|
|
20
|
+
the profile loader (Phase 1 item 1) cannot ship without the boundary.
|
|
21
|
+
|
|
22
|
+
## Context
|
|
23
|
+
|
|
24
|
+
Step-15 introduces three new configuration concepts:
|
|
25
|
+
|
|
26
|
+
- **Profile** โ Phase 1 item 1: `profile.id` โ {`founder`, `developer`,
|
|
27
|
+
`content_creator`, `agency`, `finance`, `ops`}.
|
|
28
|
+
- **Preset** โ Phase 1 item 4: `preset.id` โ {`fast`, `balanced`,
|
|
29
|
+
`strict`} bundling 12+ governance knobs (cost caps, confidence band,
|
|
30
|
+
block-on-risk, โฆ).
|
|
31
|
+
- **Pack** โ Phase 2 item 7: workflow bundles (`founder-mvp`,
|
|
32
|
+
`content-engine`, `agency-delivery`) of `(profile + preset +
|
|
33
|
+
command-set + skill-allowlist)`.
|
|
34
|
+
|
|
35
|
+
A pre-existing fourth concept is in play:
|
|
36
|
+
|
|
37
|
+
- **`cost_profile`** โ current setting in `.agent-settings.yml`, values
|
|
38
|
+
`minimal` / `balanced` / `full` / `custom`. Owns **rule-tier loading**
|
|
39
|
+
(kernel ยท kernel + tier-1 ยท kernel + tier-1 + tier-2). Contract:
|
|
40
|
+
[`docs/contracts/cost-profile-defaults.md`](../contracts/cost-profile-defaults.md).
|
|
41
|
+
|
|
42
|
+
Without a written boundary, three failure modes are predictable:
|
|
43
|
+
|
|
44
|
+
1. The preset loader re-implements rule-tier gating (overlap with
|
|
45
|
+
`cost_profile`).
|
|
46
|
+
2. Packs ship duplicate `profile` + `preset` defaults that drift from
|
|
47
|
+
the canonical source.
|
|
48
|
+
3. Three teams add knobs to three places, and a user picking
|
|
49
|
+
`developer + strict + founder-mvp` discovers contradicting values
|
|
50
|
+
at runtime.
|
|
51
|
+
|
|
52
|
+
## Decision
|
|
53
|
+
|
|
54
|
+
Four orthogonal axes, four owners, one resolution chain.
|
|
55
|
+
|
|
56
|
+
| Axis | Answers | Owns | Identity key |
|
|
57
|
+
|---|---|---|---|
|
|
58
|
+
| **Profile** | *Who is the user?* (audience taxonomy) | Default skill/command surface; README entry-paragraph; persona pre-selection | `profile.id` |
|
|
59
|
+
| **Preset** | *How cautious is this run?* (risk + cost + autonomy budget) | The 12+ governance knobs (per-call $ ceiling, confidence band, block-on-risk, autonomy default, council escalation, โฆ) | `preset.id` |
|
|
60
|
+
| **Pack** | *What bundle of skills + commands?* (workflow recipe) | A frozen `(profile, preset, allow_skills, allow_commands)` 4-tuple; nothing more | `pack.id` |
|
|
61
|
+
| **Cost Profile** | *How many rules load?* (token budget) | Rule-tier loading at session start (kernel ยท +tier-1 ยท +tier-2) | `cost_profile` |
|
|
62
|
+
|
|
63
|
+
### Resolution chain (read order, last writer wins)
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
pack โ profile โ preset โ cost_profile โ user/env/runtime overrides
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
- A **pack** declares defaults for `profile`, `preset`, and the
|
|
70
|
+
skill / command allowlists. It cannot set `cost_profile` (that
|
|
71
|
+
axis belongs to the rule-tier loader and is governed separately).
|
|
72
|
+
- A **profile** declares defaults for `preset`, audience-specific
|
|
73
|
+
README pointer, persona pre-selection. It cannot set any preset
|
|
74
|
+
knob directly โ only `preset.id`.
|
|
75
|
+
- A **preset** owns the 12+ knobs. No other axis writes them.
|
|
76
|
+
- A **cost_profile** owns rule-tier loading. No other axis writes it.
|
|
77
|
+
- The user's `.agent-settings.yml`, environment variables, and
|
|
78
|
+
runtime CLI flags override every axis above them.
|
|
79
|
+
|
|
80
|
+
### Non-overlap rules (Iron Law)
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
A KNOB BELONGS TO EXACTLY ONE AXIS.
|
|
84
|
+
DUPLICATION ACROSS AXES IS A CONTRACT VIOLATION.
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
- A pack **may not** override a preset knob; it overrides `preset.id`.
|
|
88
|
+
- A profile **may not** override a preset knob; it overrides `preset.id`.
|
|
89
|
+
- A preset **may not** override `cost_profile`; the user does that.
|
|
90
|
+
- The CI `task lint-config-schema` (added in Phase 1) hard-fails on a
|
|
91
|
+
pack/profile YAML that names any preset-owned knob.
|
|
92
|
+
|
|
93
|
+
## Consequences
|
|
94
|
+
|
|
95
|
+
### Positive
|
|
96
|
+
|
|
97
|
+
- Phase 1 ships the profile loader against a fixed surface (`profile.id`
|
|
98
|
+
โ audience + `preset.id` + persona). No 12-knob inheritance ambiguity.
|
|
99
|
+
- Phase 1 item 4 (Config Presets) owns the knobs alone. The "Cost
|
|
100
|
+
Enforcement" section in [`config-presets.md`](../contracts/config-presets.md)
|
|
101
|
+
has a single home.
|
|
102
|
+
- Phase 2 item 7 (Workflow Packs) is a 4-tuple, not a re-implementation
|
|
103
|
+
of profile + preset. Pack YAML stays under 30 lines.
|
|
104
|
+
- `cost_profile` keeps its single-axis charter; this ADR explicitly
|
|
105
|
+
refuses to fold it into the preset layer.
|
|
106
|
+
|
|
107
|
+
### Negative
|
|
108
|
+
|
|
109
|
+
- One more concept on the install screen (`profile` + `preset` + `pack`
|
|
110
|
+
+ `cost_profile` = four axes). Mitigated by: the wizard (Phase 1 item
|
|
111
|
+
2) only asks for **profile** + **stack** + **risk appetite** and
|
|
112
|
+
derives the rest. Packs are opt-in; `cost_profile` keeps its
|
|
113
|
+
`balanced` default.
|
|
114
|
+
- A skill-allowlist conflict between a pack and a runtime CLI flag is
|
|
115
|
+
resolved by "runtime wins". Users on a pack who shadow-disable a
|
|
116
|
+
skill will not see it again until the override is removed.
|
|
117
|
+
|
|
118
|
+
### Neutral
|
|
119
|
+
|
|
120
|
+
- This ADR records the boundary; it does **not** specify the seed
|
|
121
|
+
values for any axis. Profile IDs live in
|
|
122
|
+
[`docs/contracts/profile-system.md`](../contracts/profile-system.md)
|
|
123
|
+
(Phase 1 item 1). Preset knobs live in
|
|
124
|
+
[`docs/contracts/config-presets.md`](../contracts/config-presets.md)
|
|
125
|
+
(Phase 1 item 4). Pack shape lives in `docs/contracts/workflow-packs.md`
|
|
126
|
+
(Phase 2 item 7).
|
|
127
|
+
|
|
128
|
+
## See also
|
|
129
|
+
|
|
130
|
+
- [`docs/contracts/cost-profile-defaults.md`](../contracts/cost-profile-defaults.md) โ the existing `cost_profile` contract this ADR explicitly does **not** touch.
|
|
131
|
+
- [`agents/roadmaps/step-15-product-refinement.md`](../../agents/roadmaps/step-15-product-refinement.md) โ Phase 1 items 1, 4 and Phase 2 item 7.
|
|
132
|
+
- [`agents/council-responses/2026-05-16-step-15-product-refinement-v3.json`](../../agents/council-responses/2026-05-16-step-15-product-refinement-v3.json) โ Council v3 action #2 (origin). <!-- council-ref-allowed: ADR decision-trace to originating council response -->
|
package/docs/decisions/INDEX.md
CHANGED
|
@@ -13,6 +13,7 @@ _Auto-generated by `scripts/adr/regenerate_index.py`. Do not edit._
|
|
|
13
13
|
| [ADR-007](ADR-007-agent-discovery-scopes.md) | Global Default Install With Export Subcommand | accepted | 2026-05-12 | โ |
|
|
14
14
|
| [ADR-008](ADR-008-installed-tools-manifest.md) | Committed Installed Tools Manifest Separate From Settings | proposed | 2026-05-12 | โ |
|
|
15
15
|
| [ADR-009](ADR-009-event4u-namespace.md) | Event4U Namespace And Claude Desktop Zip Bundles | accepted | 2026-05-13 | โ |
|
|
16
|
+
| [ADR-010](ADR-010-profile-pack-preset-boundary.md) | Profile Pack Preset Boundary | proposed | 2026-05-16 | โ |
|
|
16
17
|
|
|
17
18
|
## Unnumbered (legacy)
|
|
18
19
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Featured Commands
|
|
2
|
+
|
|
3
|
+
A curated subset of the 124 active commands. Full set lives in
|
|
4
|
+
[`.agent-src/commands/`](../.agent-src/commands/) โ see also
|
|
5
|
+
[`docs/catalog.md`](catalog.md) for the complete index.
|
|
6
|
+
|
|
7
|
+
## For developers
|
|
8
|
+
|
|
9
|
+
| Command | What it does |
|
|
10
|
+
|---|---|
|
|
11
|
+
| [`/implement-ticket`](../.agent-src/commands/implement-ticket.md) | Drive a Jira / Linear ticket end-to-end through refine โ plan โ implement โ test โ verify |
|
|
12
|
+
| [`/work`](../.agent-src/commands/work.md) | Same end-to-end loop for a free-form prompt โ confidence-band gated |
|
|
13
|
+
| [`/fix ci`](../.agent-src/commands/fix.md) | Fetch CI failures from GitHub Actions and fix them |
|
|
14
|
+
| [`/review-changes`](../.agent-src/commands/review-changes.md) | Self-review local changes before creating a PR (five judges) |
|
|
15
|
+
| [`/create-pr`](../.agent-src/commands/create-pr.md) | Create a GitHub PR with Jira-linked description |
|
|
16
|
+
|
|
17
|
+
## For everyone
|
|
18
|
+
|
|
19
|
+
| Command | What it does |
|
|
20
|
+
|---|---|
|
|
21
|
+
| [`/research`](../.agent-src/commands/research.md) | Survey / benchmark / competitive scan scaffolder โ picks objects, defines fields |
|
|
22
|
+
| [`po-discovery`](../.agent-src/skills/po-discovery/SKILL.md) | Shape a fuzzy product ask into a refined backlog item โ problem framing, AC tightening |
|
|
23
|
+
| [`/ghostwriter:write`](../.agent-src/commands/ghostwriter/write.md) | Draft in a public-figure voice profile (mandatory disclosure footer) |
|
|
24
|
+
| [`/challenge-me`](../.agent-src/commands/challenge-me.md) | Interactive grill-style interview that sharpens a fuzzy plan into a copyable pitch |
|
|
25
|
+
| [`/fundraising-narrative`](../.agent-src/skills/fundraising-narrative/SKILL.md) | Shape a capital-raise pitch โ why-now / why-us / why-this framing |
|
|
26
|
+
|
|
27
|
+
โ [Browse all 124 active commands](../.agent-src/commands/)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "parity-bench-ruflo-v1",
|
|
3
|
+
"status": "infrastructure_ready_awaiting_corpus_run",
|
|
4
|
+
"owner_roadmap": "agents/roadmaps/step-11-ruflo-parity.md",
|
|
5
|
+
"parity_doc": "docs/parity/ruflo.md",
|
|
6
|
+
"parent_bench": "docs/parity/bench.json",
|
|
7
|
+
"claim_under_test": {
|
|
8
|
+
"source": "agents/audit-2026-05-14-north-star/external-findings.md ยง 2",
|
|
9
|
+
"headline": "Average dollar cost per 25-prompt corpus run, separated by model tier (Haiku / Sonnet / Opus) and by token class (input / output / cache-read / cache-write).",
|
|
10
|
+
"comparison_target": "ruflo cost-tracker README (claimed upstream, not yet pulled into this repo)",
|
|
11
|
+
"type": "claimed_upstream_not_verified_in_repo"
|
|
12
|
+
},
|
|
13
|
+
"measurement_protocol": {
|
|
14
|
+
"corpus": "bench/corpus/* (25-prompt corpus owned by step-4-measurement-and-benchmark.md)",
|
|
15
|
+
"tracker": "scripts/cost/track.mjs",
|
|
16
|
+
"pricing": "bench/pricing.yaml",
|
|
17
|
+
"session_source": "~/.claude/projects/*/sessions/*.jsonl (Claude Code-native, no manual tracking)",
|
|
18
|
+
"tokens_to_dollars": "track.mjs multiplies input/output/cache-read/cache-write tokens by per-1M pricing from bench/pricing.yaml, separated by model id",
|
|
19
|
+
"headline_output": "average dollar cost per 25-prompt run, with min / max / p50 / p90 across N reports"
|
|
20
|
+
},
|
|
21
|
+
"current_window": {
|
|
22
|
+
"report_count": 0,
|
|
23
|
+
"verdict": "awaiting_first_corpus_run",
|
|
24
|
+
"notes": "Phase 1-5 of step-11 delivered the cost-tracking and bench infrastructure. Phase 6 Step 2 awaits the first end-to-end 25-prompt corpus run against the live tracker. Until then this file exists as a methodology contract, not a verdict surface."
|
|
25
|
+
},
|
|
26
|
+
"soak_inheritance": {
|
|
27
|
+
"follows": "docs/parity/bench.json",
|
|
28
|
+
"min_days": 60,
|
|
29
|
+
"min_reports": 30,
|
|
30
|
+
"earliest_flip": "2026-07-15",
|
|
31
|
+
"arbiter_command": "task bench:baseline-ready",
|
|
32
|
+
"notes": "bench-ruflo.json flips status to 'baseline_ready' only after the parent bench.json flips. No independent soak window โ same corpus, same arbiter."
|
|
33
|
+
},
|
|
34
|
+
"redundancy_verdict": {
|
|
35
|
+
"status": "pending",
|
|
36
|
+
"criterion": "Once bench.json soak completes, this verdict is set by comparing the dollar cost in current_window vs ruflo's published table.",
|
|
37
|
+
"outcome_branches": {
|
|
38
|
+
"redundant": "Our cost-per-25-prompt-run sits within Ruflo's published range (or beats it). G5 redundancy gate row for cost surface flips green.",
|
|
39
|
+
"behind": "Our cost-per-run > Ruflo's. Follow-up issue filed; G5 stays open."
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"fields_pending_first_run": [
|
|
43
|
+
"current_window.avg_cost_per_run_usd",
|
|
44
|
+
"current_window.cost_by_model.haiku_usd",
|
|
45
|
+
"current_window.cost_by_model.sonnet_usd",
|
|
46
|
+
"current_window.cost_by_model.opus_usd",
|
|
47
|
+
"current_window.cost_by_class.input_usd",
|
|
48
|
+
"current_window.cost_by_class.output_usd",
|
|
49
|
+
"current_window.cost_by_class.cache_read_usd",
|
|
50
|
+
"current_window.cost_by_class.cache_write_usd"
|
|
51
|
+
],
|
|
52
|
+
"decisions_pending": {},
|
|
53
|
+
"_meta": {
|
|
54
|
+
"created": "2026-05-16",
|
|
55
|
+
"created_by": "step-11-ruflo-parity.md Phase 6 Step 2",
|
|
56
|
+
"spec": "scripts/cost/track.mjs --bench-ruflo (planned wiring); for now the file is a methodology contract"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "parity-bench-v1",
|
|
3
|
+
"status": "soak_in_progress",
|
|
4
|
+
"owner_roadmap": "agents/roadmaps/step-4-measurement-and-benchmark.md",
|
|
5
|
+
"contract": "docs/contracts/measurement-baseline.md",
|
|
6
|
+
"soak": {
|
|
7
|
+
"start_date": "2026-05-16",
|
|
8
|
+
"min_days": 60,
|
|
9
|
+
"min_reports": 30,
|
|
10
|
+
"earliest_flip": "2026-07-15",
|
|
11
|
+
"arbiter_command": "task bench:baseline-ready"
|
|
12
|
+
},
|
|
13
|
+
"current_window": {
|
|
14
|
+
"report_count": 1,
|
|
15
|
+
"days_elapsed": 0,
|
|
16
|
+
"verdict": "warmup",
|
|
17
|
+
"notes": "First infrastructure-shakedown run only. Numbers below are not the baseline."
|
|
18
|
+
},
|
|
19
|
+
"shakedown_run": {
|
|
20
|
+
"report": "bench/reports/2026-05-16T06-13-07Z-dev-projection.md",
|
|
21
|
+
"corpus": "dev",
|
|
22
|
+
"selection_accuracy_augment": 0.5,
|
|
23
|
+
"selection_accuracy_claude": 0.5,
|
|
24
|
+
"projection_fidelity_claude": 1.0,
|
|
25
|
+
"projection_fidelity_cursor": "not_applicable",
|
|
26
|
+
"projection_fidelity_cline": "not_applicable",
|
|
27
|
+
"projection_fidelity_windsurf": "not_applicable"
|
|
28
|
+
},
|
|
29
|
+
"decisions_pending": {
|
|
30
|
+
"compression_default": {
|
|
31
|
+
"kill_criterion": "docs/contracts/compression-default-kill-criterion.md",
|
|
32
|
+
"verdict": "deferred_until_baseline_closes",
|
|
33
|
+
"decision_owner": "step-4 closeout phase"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"downstream_consumers": [
|
|
37
|
+
"agents/roadmaps/step-99-north-star-restructure.md#G1",
|
|
38
|
+
"agents/roadmaps/step-2-skill-inventory-rationalization.md#G0",
|
|
39
|
+
"docs/contracts/compression-default-kill-criterion.md"
|
|
40
|
+
]
|
|
41
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Parity verdict โ Ruflo
|
|
2
|
+
|
|
3
|
+
> Per-row verdict against the eight Ruflo measurement-governance patterns
|
|
4
|
+
> catalogued in
|
|
5
|
+
> [`external-findings.md ยง 2`](../../agents/audit-2026-05-14-north-star/external-findings.md).
|
|
6
|
+
> Owner roadmap: [`step-11-ruflo-parity.md`](../../agents/roadmaps/step-11-ruflo-parity.md)
|
|
7
|
+
> (Phase 6 Step 1). Cross-index lives at
|
|
8
|
+
> [`step-99-north-star-restructure.md`](../../agents/roadmaps/step-99-north-star-restructure.md)
|
|
9
|
+
> Phase 5 Step 2.
|
|
10
|
+
>
|
|
11
|
+
> **Verdict legend:** `[x] covered by <file:line>` ยท `[~] superseded by <approach>` ยท `[!] gap`.
|
|
12
|
+
> **Acceptance:** zero `[!]` rows. Closure flips the corresponding cell in the
|
|
13
|
+
> [composite scorecard](../../agents/audit-2026-05-14-north-star/external-findings.md#5-composite-scorecard--agent-config-vs-the-field)
|
|
14
|
+
> `vs Ruflo` column from `โ` to `=` or `+`.
|
|
15
|
+
|
|
16
|
+
**Measured-vs-claimed disclaimer:** Each row cites the **mechanism** that
|
|
17
|
+
covers Ruflo's pattern. Numbers attached to those mechanisms (cost figures,
|
|
18
|
+
smoke baselines, ADR count) are claimed until the 25-prompt bench corpus
|
|
19
|
+
soak in [`bench.json`](bench.json) flips from `warmup` to `baseline_ready`
|
|
20
|
+
(min 60 days, โฅ 30 reports โ earliest 2026-07-15).
|
|
21
|
+
|
|
22
|
+
## Verdict table
|
|
23
|
+
|
|
24
|
+
| # | Ruflo pattern | Verdict | Evidence |
|
|
25
|
+
|---|---|---|---|
|
|
26
|
+
| 1 | **Cost-tracker plugin** โ real model pricing, per-1M, separated input/output/cache | `[x] covered by` | [`scripts/cost/track.mjs`](../../scripts/cost/track.mjs) + [`bench/pricing.yaml`](../../bench/pricing.yaml) (Haiku/Sonnet/Opus per-1M, input/output/cache-read/cache-write split). Step-11 Phase 1. |
|
|
27
|
+
| 2 | **Auto-capture from session jsonl** โ reads Claude Code log, no manual tracking | `[x] covered by` | [`scripts/cost/track.mjs`](../../scripts/cost/track.mjs) reads `~/.claude/projects/*/sessions/*.jsonl` automatically. Step-11 Phase 1 Step 1. |
|
|
28
|
+
| 3 | **50/75/90/100 % budget ladder with hard stop** | `[x] covered by` | [`scripts/cost/budget.mjs`](../../scripts/cost/budget.mjs) โ exit codes 0/1/2/3 per tier; opt-in fail-closed via `cost.enforcement` setting. Fixtures: `tests/fixtures/cost/budget/{under-50,at-100,over-100}/`. Step-11 Phase 2. |
|
|
29
|
+
| 4 | **Measured-vs-claimed disclaimer** โ every percentage tagged "claimed upstream" | `[x] covered by` | One-line `**Measured-vs-claimed disclaimer:**` header block on all 9 active roadmaps in `agents/roadmaps/`. Verified 2026-05-16. Step-11 Phase 5 Step 4. |
|
|
30
|
+
| 5 | **Smoke test as contract** โ `bash scripts/smoke.sh` with declared baseline | `[x] covered by` | Four per-tier smoke scripts: [`scripts/smoke/kernel.sh`](../../scripts/smoke/kernel.sh), [`router.sh`](../../scripts/smoke/router.sh), [`schema.sh`](../../scripts/smoke/schema.sh), [`skills.sh`](../../scripts/smoke/skills.sh). Declared baselines in [`docs/contracts/smoke-contracts.md`](../contracts/smoke-contracts.md). CI gate: [`.github/workflows/smoke.yml`](../../.github/workflows/smoke.yml). Step-11 Phase 3. |
|
|
31
|
+
| 6 | **Per-plugin ADR directory** โ `docs/adrs/0001-*.md` co-located with subsystem | `[x] covered by` | Six bootstrap ADRs under [`docs/adrs/{cost,memory,router,schema,smoke,caveman}/`](../adrs/). Coverage gate: [`scripts/audit_adr_coverage.py`](../../scripts/audit_adr_coverage.py) (`task lint-adr-coverage`). Contract: [`docs/contracts/adr-layout.md`](../contracts/adr-layout.md). Step-11 Phase 4. |
|
|
32
|
+
| 7 | **Namespace contract** โ `<stem>-<intent>` kebab-case, reserved-names list | `[x] covered by` | [`scripts/lint_namespace.py`](../../scripts/lint_namespace.py) enforces shape + length floors + reserved-names + skill-dir-matches-name across 430 names ยท 0 issues. Contract: [`docs/contracts/namespace.md`](../contracts/namespace.md). CI gate: `task lint-namespace`. Step-11 Phase 5 Step 1. |
|
|
33
|
+
| 8 | **Topology choices in swarm** โ `hierarchical / mesh / star / adaptive` with anti-drift defaults | `[x] covered by` | [`.agent-src.uncompressed/skills/subagent-orchestration/SKILL.md`](../../.agent-src.uncompressed/skills/subagent-orchestration/SKILL.md) `Topology hints` subsection โ 7-row table mapping each mode to topology + Ruflo anti-drift default (`hierarchical, 6โ8 agents, raft consensus`). Step-11 Phase 5 Step 2. |
|
|
34
|
+
| 9 | **MCP-tool count + source-line refs** โ every tool with `<file>:<line>` citation | `[x] covered by` | [`docs/contracts/mcp-tool-inventory.md`](../contracts/mcp-tool-inventory.md) โ 20 tools (9 stdio-implemented ยท 11 discovery stubs) each with catalog `<file>:<line>` + handler `<file>:<line>`. Generator: [`scripts/audit_mcp_tools.py`](../../scripts/audit_mcp_tools.py). CI drift gate: `task lint-mcp-inventory`. Step-11 Phase 5 Step 3. |
|
|
35
|
+
|
|
36
|
+
## Open `[!]` rows
|
|
37
|
+
|
|
38
|
+
**Zero.** Every Ruflo pattern is mechanism-covered. Numbers behind those
|
|
39
|
+
mechanisms remain claimed until [`bench.json`](bench.json) soak completes
|
|
40
|
+
(see disclaimer above).
|
|
41
|
+
|
|
42
|
+
## Cross-references
|
|
43
|
+
|
|
44
|
+
- Composite scorecard refresh: owned by [`step-99-north-star-restructure.md`](../../agents/roadmaps/step-99-north-star-restructure.md) Phase 5 Step 4 (replaces [`external-findings.md ยง 5`](../../agents/audit-2026-05-14-north-star/external-findings.md)).
|
|
45
|
+
- Bench-ruflo redundancy verdict: [`bench-ruflo.json`](bench-ruflo.json) (step-11 Phase 6 Step 2).
|
|
46
|
+
- G5 redundancy gate cite: step-99 Acceptance Criteria row "G5 โ external redundancy (Domination Mandate)".
|
package/docs/profiles.md
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Six entry paths โ by `profile.id`
|
|
2
|
+
|
|
3
|
+
Each block below is the first-screen for one shipped profile. The
|
|
4
|
+
`profile.id` written by `/onboard` selects the anchor; the block names
|
|
5
|
+
the audience, the first three things the agent does for that role,
|
|
6
|
+
and the exact commands and skills wired into the profile YAML at
|
|
7
|
+
[`.agent-src.uncompressed/profiles/<id>.yml`](../.agent-src.uncompressed/profiles/).
|
|
8
|
+
|
|
9
|
+
The summary table at the top of [`README.md`](../README.md) is the
|
|
10
|
+
one-page index; the prose below is the deep version.
|
|
11
|
+
|
|
12
|
+
<a id="profile-developer"></a>
|
|
13
|
+
## ๐ฉโ๐ป `developer` โ IC engineer
|
|
14
|
+
|
|
15
|
+
Implement a ticket end-to-end, fix CI red, run a self-review before
|
|
16
|
+
the PR. `/implement-ticket` refines the ticket, plans, edits, tests,
|
|
17
|
+
and verifies; `/work` is the free-form sibling; `/review-changes`
|
|
18
|
+
dispatches five judges (bug, security, tests, quality, architecture)
|
|
19
|
+
on the local diff. Stack-aware skills cover Laravel ยท Symfony ยท
|
|
20
|
+
Next.js ยท React ยท Node. **Preset default: `balanced`.**
|
|
21
|
+
[Profile YAML](../.agent-src.uncompressed/profiles/developer.yml) ยท
|
|
22
|
+
[Role guide](getting-started-by-role.md#developer-the-original-audience).
|
|
23
|
+
|
|
24
|
+
<a id="profile-content_creator"></a>
|
|
25
|
+
## โ๏ธ `content_creator` โ writers, ghostwriters, marketers
|
|
26
|
+
|
|
27
|
+
Draft in someone else's voice, plan a quarter of content, ship a
|
|
28
|
+
launch announcement. `/ghostwriter` fetches and writes against a
|
|
29
|
+
public-figure voice profile; `/post-as` is the same primitive for
|
|
30
|
+
your own voice (`.agent-user.md`); `voice-and-tone-design` and
|
|
31
|
+
`messaging-architecture` lock the brand frame before any copy ships.
|
|
32
|
+
**Preset default: `balanced`.**
|
|
33
|
+
[Profile YAML](../.agent-src.uncompressed/profiles/content_creator.yml) ยท
|
|
34
|
+
[Role guide](getting-started-by-role.md#creator-writer-marketer-indie-content-shop).
|
|
35
|
+
|
|
36
|
+
<a id="profile-founder"></a>
|
|
37
|
+
## ๐ `founder` โ solo / early-stage founder
|
|
38
|
+
|
|
39
|
+
Sharpen a fuzzy idea, rank what to build, write the why-now slide.
|
|
40
|
+
`/challenge-me` runs a grill-style interview that turns a vague plan
|
|
41
|
+
into a copyable pitch; `/council` polls external AIs for a neutral
|
|
42
|
+
second opinion; `rice-prioritization` ranks the backlog;
|
|
43
|
+
`vision-articulation` and `fundraising-narrative` shape the
|
|
44
|
+
internal-vs-external story. **Preset default: `fast`.**
|
|
45
|
+
[Profile YAML](../.agent-src.uncompressed/profiles/founder.yml) ยท
|
|
46
|
+
[Role guide](getting-started-by-role.md#founder-early-stage-operator-wearing-every-hat).
|
|
47
|
+
|
|
48
|
+
<a id="profile-agency"></a>
|
|
49
|
+
## ๐ `agency` โ multi-client delivery shop
|
|
50
|
+
|
|
51
|
+
Refine a fuzzy client ask into an estimated, AC-tight ticket; turn a
|
|
52
|
+
phase into a roadmap; ship per client without losing decision
|
|
53
|
+
provenance. `/refine-ticket` rewrites the ticket and surfaces top-5
|
|
54
|
+
risks; `estimate-ticket` sizes and splits; `decision-record` anchors
|
|
55
|
+
the trade-off in an ADR before code starts. **Preset default:
|
|
56
|
+
`strict`.**
|
|
57
|
+
[Profile YAML](../.agent-src.uncompressed/profiles/agency.yml) ยท
|
|
58
|
+
[Role guide](getting-started-by-role.md#consultant-advisory-freelance-fractional).
|
|
59
|
+
|
|
60
|
+
<a id="profile-finance"></a>
|
|
61
|
+
## ๐ผ `finance` โ CFO / fractional finance / FP&A
|
|
62
|
+
|
|
63
|
+
Build a DCF, stress-test the plan, frame the runway call. `dcf-modeling`
|
|
64
|
+
walks the WACC / terminal-value / 5-year-hold reasoning; `forecasting`
|
|
65
|
+
reconciles top-down vs bottom-up; `scenario-modeling` produces the
|
|
66
|
+
base / upside / downside cuts; `runway-cognition` frames the
|
|
67
|
+
fundraise-vs-cut-vs-grow decision. **Preset default: `strict`.**
|
|
68
|
+
[Profile YAML](../.agent-src.uncompressed/profiles/finance.yml) ยท
|
|
69
|
+
[Role guide](getting-started-by-role.md#finance--ops-cfo-controller-ops-lead-founder-finance).
|
|
70
|
+
|
|
71
|
+
<a id="profile-ops"></a>
|
|
72
|
+
## ๐ก `ops` โ RevOps, support, SRE-adjacent
|
|
73
|
+
|
|
74
|
+
Threat-model a change before it ships, command the incident when it
|
|
75
|
+
breaks, build the dashboard that catches it next time.
|
|
76
|
+
`/threat-model` enumerates abuse cases and trust boundaries before
|
|
77
|
+
the first line of code; `incident-commander` frames severity and
|
|
78
|
+
post-mortem; `dashboard-design` chooses the right RED / USE / Golden
|
|
79
|
+
Signal panel. **Preset default: `strict`.**
|
|
80
|
+
[Profile YAML](../.agent-src.uncompressed/profiles/ops.yml) ยท
|
|
81
|
+
[Role guide](getting-started-by-role.md#finance--ops-cfo-controller-ops-lead-founder-finance).
|
|
82
|
+
|
|
83
|
+
> **Universal AI Agent OS, not "for developers only".** The same
|
|
84
|
+
> orchestration core also drives non-software trades. Worked-example
|
|
85
|
+
> user types ship for [galabau](../.agent-src.uncompressed/user-types/galabau-field-crew.md),
|
|
86
|
+
> [metalworking](../.agent-src.uncompressed/user-types/metalworking-shop.md),
|
|
87
|
+
> [truck driving](../.agent-src.uncompressed/user-types/truck-driver.md) โ
|
|
88
|
+
> with a [scaffold](../.agent-src.uncompressed/user-types/_template/) for
|
|
89
|
+
> contributing your own.
|
|
90
|
+
|
|
91
|
+
โ [Public catalog](catalog.md) (all rules, skills, commands, guidelines) ยท [Skills only](skills-catalog.md) ยท [llms.txt](../llms.txt)
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Recruit โ `<short-handle>`
|
|
2
|
+
|
|
3
|
+
> **step-13 Phase 1 intake template.** One file per recruit. Filename:
|
|
4
|
+
> `<YYYY-MM-DD>-<source>-<handle>.md` (e.g. `2026-05-20-indiehackers-jsmith.md`).
|
|
5
|
+
> The maintainer fills this in **before** the recruit's first session; the
|
|
6
|
+
> session-log section gets appended live during the walkthrough.
|
|
7
|
+
|
|
8
|
+
## Identity & source
|
|
9
|
+
|
|
10
|
+
- **Handle / display name:** `<as-they-want-to-be-credited>`
|
|
11
|
+
- **Source channel:** (indie-hackers | r/ContentWritingJobs | product-hunt | direct-dm | other)
|
|
12
|
+
- **First contact:** YYYY-MM-DD via `<thread-url-or-DM-context>`
|
|
13
|
+
- **Role / self-description:** `<one-line, in their words>`
|
|
14
|
+
- **User-type fit:** (consultant | creator | founder | finance | ops | gtm | other)
|
|
15
|
+
- **Tool host they already use:** (claude-desktop | claude-code | cursor | windsurf | copilot | chatgpt-web | none)
|
|
16
|
+
|
|
17
|
+
## Consent
|
|
18
|
+
|
|
19
|
+
- **Attribution:** (full-name-OK | first-name-OK | role-only | fully-anonymous)
|
|
20
|
+
- **Screenshot publication:** (yes | yes-with-redaction | no)
|
|
21
|
+
- **Verbatim quote publication:** (yes | yes-with-review | no)
|
|
22
|
+
- **Case-study publication if outcome lands:** (yes | maybe-revisit | no)
|
|
23
|
+
- **Consent record:** `<link-to-dm-or-email-thread-or-signed-form>`
|
|
24
|
+
|
|
25
|
+
> Consent gate per step-13 Phase 1 row 3 โ a recruit without an explicit
|
|
26
|
+
> consent record cannot anchor `agents/eval-findings/`. Anonymised
|
|
27
|
+
> finding is acceptable; missing consent record is not.
|
|
28
|
+
|
|
29
|
+
## Pre-session readiness
|
|
30
|
+
|
|
31
|
+
- [ ] Recruit has Claude Desktop installed *(or equivalent MCP host)*
|
|
32
|
+
- [ ] Recruit has a real task ready to bring to the session
|
|
33
|
+
- [ ] Maintainer has [`docs/mcp-server.md`](../mcp-server.md) open in another tab
|
|
34
|
+
- [ ] Maintainer has stopwatch / screen-recording ready for the install-time
|
|
35
|
+
measurement (Phase 1 row 2 โ `< 10 minutes` gate)
|
|
36
|
+
|
|
37
|
+
## Session log
|
|
38
|
+
|
|
39
|
+
Append-only during the walkthrough. Timestamp every observation;
|
|
40
|
+
"silent" minutes are also a signal.
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
HH:MM start โ recruit shares screen, opens Claude Desktop
|
|
44
|
+
HH:MM install step 1 (`task mcp:setup`): outcome / friction / quote
|
|
45
|
+
HH:MM install step 2 (Claude Desktop config paste): outcome / friction / quote
|
|
46
|
+
HH:MM first invocation attempt: prompt / which skill fired / verdict
|
|
47
|
+
...
|
|
48
|
+
HH:MM end โ total install time: __ min __ s
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Friction inventory
|
|
52
|
+
|
|
53
|
+
At least **two** real friction points (per step-12 Phase 7 L130 spirit).
|
|
54
|
+
Empty list = the session wasn't real.
|
|
55
|
+
|
|
56
|
+
1. <where they stalled, in their words> โ <what we fixed / parked>
|
|
57
|
+
2. <...>
|
|
58
|
+
|
|
59
|
+
## Outcome verdict
|
|
60
|
+
|
|
61
|
+
- **MCP setup time:** `__ minutes __ seconds` (gate: `< 10 min`)
|
|
62
|
+
- **First useful invocation reached without terminal?:** (yes | no | partial)
|
|
63
|
+
- **Recruit would recommend to a peer?:** (yes | maybe | no | declined-to-answer)
|
|
64
|
+
- **Eligible to anchor `agents/eval-findings/`?:** (yes | no โ reason)
|
|
65
|
+
|
|
66
|
+
## Cross-links
|
|
67
|
+
|
|
68
|
+
- **Eval-finding file (if logged):** `agents/eval-findings/YYYY-MM-DD-<slug>.md`
|
|
69
|
+
- **Case-study file (if subject opted in):** `docs/case-studies/YYYY-MM-DD-<type>-<slug>.md`
|
|
70
|
+
- **Roadmap rows closed by this session:**
|
|
71
|
+
- step-13 P1 row 1 (recruit) โ yes / no
|
|
72
|
+
- step-13 P1 row 2 (`< 10 min` gate) โ yes / no
|
|
73
|
+
- step-13 P1 row 3 (consent record) โ yes / no
|
|
74
|
+
|
|
75
|
+
## Maintainer follow-up
|
|
76
|
+
|
|
77
|
+
- [ ] Eval-finding committed
|
|
78
|
+
- [ ] Recruit thanked + sent the published finding link
|
|
79
|
+
- [ ] Skill-description deltas filed *(any friction that maps to a
|
|
80
|
+
skill description widening or a missing trigger phrase)*
|
|
81
|
+
- [ ] Case-study slot offered *(if outcome was useful + consent allows)*
|
package/package.json
CHANGED