selftune 0.2.0 → 0.2.2
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/diagnosis-analyst.md +20 -10
- package/.claude/agents/evolution-reviewer.md +14 -1
- package/.claude/agents/integration-guide.md +18 -6
- package/.claude/agents/pattern-analyst.md +18 -5
- package/CHANGELOG.md +12 -4
- package/README.md +43 -35
- package/apps/local-dashboard/dist/assets/geist-cyrillic-wght-normal-CHSlOQsW.woff2 +0 -0
- package/apps/local-dashboard/dist/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2 +0 -0
- package/apps/local-dashboard/dist/assets/geist-latin-wght-normal-Dm3htQBi.woff2 +0 -0
- package/apps/local-dashboard/dist/assets/index-C4EOTFZ2.js +15 -0
- package/apps/local-dashboard/dist/assets/index-bl-Webyd.css +1 -0
- package/apps/local-dashboard/dist/assets/vendor-react-U7zYD9Rg.js +60 -0
- package/apps/local-dashboard/dist/assets/vendor-table-B7VF2Ipl.js +26 -0
- package/apps/local-dashboard/dist/assets/vendor-ui-D7_zX_qy.js +346 -0
- package/apps/local-dashboard/dist/favicon.png +0 -0
- package/apps/local-dashboard/dist/index.html +17 -0
- package/apps/local-dashboard/dist/logo.png +0 -0
- package/apps/local-dashboard/dist/logo.svg +9 -0
- package/cli/selftune/badge/badge-data.ts +1 -1
- package/cli/selftune/badge/badge.ts +4 -8
- package/cli/selftune/canonical-export.ts +183 -0
- package/cli/selftune/constants.ts +28 -0
- package/cli/selftune/contribute/contribute.ts +1 -1
- package/cli/selftune/cron/setup.ts +17 -17
- package/cli/selftune/dashboard-contract.ts +202 -0
- package/cli/selftune/dashboard-server.ts +653 -186
- package/cli/selftune/dashboard.ts +41 -176
- package/cli/selftune/eval/baseline.ts +5 -4
- package/cli/selftune/eval/composability-v2.ts +273 -0
- package/cli/selftune/eval/hooks-to-evals.ts +34 -15
- package/cli/selftune/eval/unit-test-cli.ts +1 -1
- package/cli/selftune/evolution/evidence.ts +26 -0
- package/cli/selftune/evolution/evolve-body.ts +105 -11
- package/cli/selftune/evolution/evolve.ts +371 -25
- package/cli/selftune/evolution/extract-patterns.ts +87 -29
- package/cli/selftune/evolution/rollback.ts +2 -2
- package/cli/selftune/grading/auto-grade.ts +200 -0
- package/cli/selftune/grading/grade-session.ts +448 -97
- package/cli/selftune/grading/results.ts +42 -0
- package/cli/selftune/hooks/prompt-log.ts +172 -2
- package/cli/selftune/hooks/session-stop.ts +123 -3
- package/cli/selftune/hooks/skill-eval.ts +119 -3
- package/cli/selftune/index.ts +395 -116
- package/cli/selftune/ingestors/claude-replay.ts +140 -114
- package/cli/selftune/ingestors/codex-rollout.ts +345 -46
- package/cli/selftune/ingestors/codex-wrapper.ts +207 -39
- package/cli/selftune/ingestors/openclaw-ingest.ts +141 -8
- package/cli/selftune/ingestors/opencode-ingest.ts +193 -17
- package/cli/selftune/init.ts +227 -14
- package/cli/selftune/last.ts +14 -5
- package/cli/selftune/localdb/db.ts +63 -0
- package/cli/selftune/localdb/materialize.ts +428 -0
- package/cli/selftune/localdb/queries.ts +376 -0
- package/cli/selftune/localdb/schema.ts +204 -0
- package/cli/selftune/monitoring/watch.ts +66 -15
- package/cli/selftune/normalization.ts +682 -0
- package/cli/selftune/observability.ts +19 -44
- package/cli/selftune/orchestrate.ts +1073 -0
- package/cli/selftune/quickstart.ts +203 -0
- package/cli/selftune/repair/skill-usage.ts +576 -0
- package/cli/selftune/schedule.ts +561 -0
- package/cli/selftune/status.ts +48 -26
- package/cli/selftune/sync.ts +627 -0
- package/cli/selftune/types.ts +148 -0
- package/cli/selftune/utils/canonical-log.ts +45 -0
- package/cli/selftune/utils/hooks.ts +41 -0
- package/cli/selftune/utils/html.ts +27 -0
- package/cli/selftune/utils/llm-call.ts +78 -20
- package/cli/selftune/utils/math.ts +10 -0
- package/cli/selftune/utils/query-filter.ts +139 -0
- package/cli/selftune/utils/skill-discovery.ts +340 -0
- package/cli/selftune/utils/skill-log.ts +68 -0
- package/cli/selftune/utils/skill-usage-confidence.ts +18 -0
- package/cli/selftune/utils/transcript.ts +272 -26
- package/cli/selftune/workflows/discover.ts +254 -0
- package/cli/selftune/workflows/skill-md-writer.ts +288 -0
- package/cli/selftune/workflows/workflows.ts +188 -0
- package/package.json +21 -8
- package/packages/telemetry-contract/README.md +11 -0
- package/packages/telemetry-contract/fixtures/golden.json +87 -0
- package/packages/telemetry-contract/fixtures/golden.test.ts +42 -0
- package/packages/telemetry-contract/index.ts +1 -0
- package/packages/telemetry-contract/package.json +19 -0
- package/packages/telemetry-contract/src/index.ts +2 -0
- package/packages/telemetry-contract/src/types.ts +163 -0
- package/packages/telemetry-contract/src/validators.ts +109 -0
- package/skill/SKILL.md +84 -53
- package/skill/Workflows/AutoActivation.md +17 -16
- package/skill/Workflows/Badge.md +6 -0
- package/skill/Workflows/Baseline.md +46 -23
- package/skill/Workflows/Composability.md +12 -5
- package/skill/Workflows/Contribute.md +17 -14
- package/skill/Workflows/Cron.md +56 -79
- package/skill/Workflows/Dashboard.md +45 -34
- package/skill/Workflows/Doctor.md +30 -17
- package/skill/Workflows/Evals.md +64 -40
- package/skill/Workflows/EvolutionMemory.md +2 -0
- package/skill/Workflows/Evolve.md +102 -47
- package/skill/Workflows/EvolveBody.md +6 -6
- package/skill/Workflows/Grade.md +36 -31
- package/skill/Workflows/ImportSkillsBench.md +11 -5
- package/skill/Workflows/Ingest.md +43 -36
- package/skill/Workflows/Initialize.md +44 -30
- package/skill/Workflows/Orchestrate.md +139 -0
- package/skill/Workflows/Replay.md +39 -18
- package/skill/Workflows/Rollback.md +3 -3
- package/skill/Workflows/Schedule.md +61 -0
- package/skill/Workflows/Sync.md +88 -0
- package/skill/Workflows/UnitTest.md +34 -22
- package/skill/Workflows/Watch.md +14 -4
- package/skill/Workflows/Workflows.md +129 -0
- package/skill/assets/activation-rules-default.json +26 -0
- package/skill/assets/multi-skill-settings.json +63 -0
- package/skill/assets/single-skill-settings.json +57 -0
- package/skill/references/invocation-taxonomy.md +2 -2
- package/skill/references/logs.md +164 -2
- package/skill/references/setup-patterns.md +65 -0
- package/skill/references/version-history.md +40 -0
- package/skill/settings_snippet.json +1 -1
- package/templates/multi-skill-settings.json +7 -7
- package/templates/single-skill-settings.json +6 -6
- package/dashboard/index.html +0 -1680
package/skill/references/logs.md
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# Log Format Reference
|
|
2
2
|
|
|
3
|
-
selftune writes
|
|
4
|
-
in detail for the skill to use when parsing sessions
|
|
3
|
+
selftune writes raw legacy logs plus a canonical event log. This reference
|
|
4
|
+
describes each format in detail for the skill to use when parsing sessions,
|
|
5
|
+
audit trails, and cloud-ingest exports.
|
|
5
6
|
|
|
6
7
|
---
|
|
7
8
|
|
|
@@ -54,12 +55,30 @@ One record per skill trigger event. Populated by skill-eval.ts (PostToolUse hook
|
|
|
54
55
|
"session_id": "abc123",
|
|
55
56
|
"skill_name": "pptx",
|
|
56
57
|
"skill_path": "/mnt/skills/public/pptx/SKILL.md",
|
|
58
|
+
"skill_scope": "project",
|
|
59
|
+
"skill_project_root": "/home/user/projects/myapp",
|
|
60
|
+
"skill_registry_dir": "/home/user/projects/myapp/.agents/skills",
|
|
61
|
+
"skill_path_resolution_source": "raw_log",
|
|
57
62
|
"query": "Make me a slide deck for the board meeting",
|
|
58
63
|
"triggered": true,
|
|
59
64
|
"source": "claude_code"
|
|
60
65
|
}
|
|
61
66
|
```
|
|
62
67
|
|
|
68
|
+
Optional provenance fields:
|
|
69
|
+
- `skill_scope`: `project | global | admin | system | unknown`
|
|
70
|
+
- `skill_project_root`: resolved repo/worktree root when the skill came from a project-local registry
|
|
71
|
+
- `skill_registry_dir`: the registry directory where the resolved `SKILL.md` came from
|
|
72
|
+
- `skill_path_resolution_source`: `raw_log | installed_scope | launcher_base_dir | fallback`
|
|
73
|
+
|
|
74
|
+
The repaired overlay at `~/.claude/skill_usage_repaired.jsonl` uses the same
|
|
75
|
+
record shape, but is rebuilt from source-truth transcripts/rollouts rather than
|
|
76
|
+
hooks alone.
|
|
77
|
+
|
|
78
|
+
Notes:
|
|
79
|
+
- `launcher_base_dir` means selftune recovered Claude's `Base directory for this skill:` launcher metadata. If that recovered `SKILL.md` path points into a stable registry like `~/.agents/skills`, `~/.claude/skills`, `/etc/codex/skills`, or a real project checkout, selftune now reclassifies the invocation into the matching `skill_scope`. Ephemeral temp launcher directories still remain `unknown`.
|
|
80
|
+
- `fallback` means selftune confirmed a skill invocation but could not yet resolve a concrete `SKILL.md` path.
|
|
81
|
+
|
|
63
82
|
---
|
|
64
83
|
|
|
65
84
|
## ~/.claude/all_queries_log.jsonl
|
|
@@ -77,6 +96,149 @@ Every user query, whether or not it triggered a skill. Populated by prompt-log.t
|
|
|
77
96
|
|
|
78
97
|
---
|
|
79
98
|
|
|
99
|
+
## ~/.claude/canonical_telemetry_log.jsonl
|
|
100
|
+
|
|
101
|
+
Canonical append-only event stream. This is the normalization boundary for local
|
|
102
|
+
and cloud ingestion. Raw legacy logs remain unchanged; canonical events are
|
|
103
|
+
written separately. Parse it as JSONL: UTF-8 text, one canonical JSON object
|
|
104
|
+
per line, newline-delimited, with parsers reading line-by-line and allowing a
|
|
105
|
+
final trailing newline.
|
|
106
|
+
|
|
107
|
+
Observed record kinds:
|
|
108
|
+
|
|
109
|
+
- `session`
|
|
110
|
+
- `prompt`
|
|
111
|
+
- `skill_invocation`
|
|
112
|
+
- `execution_fact`
|
|
113
|
+
- `normalization_run` (reserved for future normalization job summaries)
|
|
114
|
+
|
|
115
|
+
Example prompt record:
|
|
116
|
+
|
|
117
|
+
```json
|
|
118
|
+
{
|
|
119
|
+
"record_kind": "prompt",
|
|
120
|
+
"schema_version": "2.0",
|
|
121
|
+
"normalizer_version": "1.0.0",
|
|
122
|
+
"normalized_at": "2026-03-10T10:00:00.000Z",
|
|
123
|
+
"platform": "claude_code",
|
|
124
|
+
"capture_mode": "hook",
|
|
125
|
+
"source_session_kind": "interactive",
|
|
126
|
+
"session_id": "abc123",
|
|
127
|
+
"raw_source_ref": {
|
|
128
|
+
"event_type": "UserPromptSubmit"
|
|
129
|
+
},
|
|
130
|
+
"prompt_id": "abc123:p0",
|
|
131
|
+
"occurred_at": "2026-03-10T10:00:00.000Z",
|
|
132
|
+
"prompt_text": "Make me a slide deck for the board meeting",
|
|
133
|
+
"prompt_hash": "4d6c5c0b1a2f7a40",
|
|
134
|
+
"prompt_kind": "user",
|
|
135
|
+
"is_actionable": true,
|
|
136
|
+
"prompt_index": 0
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Example skill invocation record:
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
{
|
|
144
|
+
"record_kind": "skill_invocation",
|
|
145
|
+
"schema_version": "2.0",
|
|
146
|
+
"normalizer_version": "1.0.0",
|
|
147
|
+
"normalized_at": "2026-03-10T10:00:05.000Z",
|
|
148
|
+
"platform": "claude_code",
|
|
149
|
+
"capture_mode": "hook",
|
|
150
|
+
"source_session_kind": "interactive",
|
|
151
|
+
"session_id": "abc123",
|
|
152
|
+
"raw_source_ref": {
|
|
153
|
+
"path": "/home/user/.claude/projects/.../abc123.jsonl",
|
|
154
|
+
"event_type": "PostToolUse"
|
|
155
|
+
},
|
|
156
|
+
"skill_invocation_id": "abc123:s:pptx:0",
|
|
157
|
+
"occurred_at": "2026-03-10T10:00:05.000Z",
|
|
158
|
+
"matched_prompt_id": "abc123:p0",
|
|
159
|
+
"skill_name": "pptx",
|
|
160
|
+
"skill_path": "/mnt/skills/public/pptx/SKILL.md",
|
|
161
|
+
"invocation_mode": "explicit",
|
|
162
|
+
"triggered": true,
|
|
163
|
+
"confidence": 1
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Run `selftune export-canonical --out ~/.claude/canonical_telemetry_log.jsonl`
|
|
168
|
+
to write a canonical JSONL telemetry export ready for downstream cloud
|
|
169
|
+
ingestion.
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## ~/.selftune/canonical-session-state-<session>.json
|
|
174
|
+
|
|
175
|
+
Per-session helper state used only to preserve deterministic canonical prompt IDs
|
|
176
|
+
for live Claude hooks. `<session>` is the `session_id` with every character
|
|
177
|
+
outside `[A-Za-z0-9_-]` replaced by `_`, so `user:abc/123` becomes
|
|
178
|
+
`canonical-session-state-user_abc_123.json`.
|
|
179
|
+
|
|
180
|
+
```json
|
|
181
|
+
{
|
|
182
|
+
"session_id": "abc123",
|
|
183
|
+
"next_prompt_index": 2,
|
|
184
|
+
"last_prompt_id": "abc123:p1",
|
|
185
|
+
"last_actionable_prompt_id": "abc123:p1",
|
|
186
|
+
"updated_at": "2026-03-10T10:00:05.000Z"
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
This is operational state, not an analytics source of truth.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## ~/.claude/improvement_signals.jsonl
|
|
195
|
+
|
|
196
|
+
One record per detected improvement signal. Written by `prompt-log.ts` when a
|
|
197
|
+
user correction or explicit skill request is detected. Read by the orchestrator
|
|
198
|
+
for signal-aware candidate selection, and by `session-stop.ts` to decide whether
|
|
199
|
+
to spawn a reactive orchestrate run.
|
|
200
|
+
|
|
201
|
+
```json
|
|
202
|
+
{
|
|
203
|
+
"timestamp": "2026-03-15T14:00:00.000Z",
|
|
204
|
+
"session_id": "abc123",
|
|
205
|
+
"query": "why didn't you use the commit skill?",
|
|
206
|
+
"signal_type": "correction",
|
|
207
|
+
"mentioned_skill": "commit",
|
|
208
|
+
"consumed": false
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Signal records are append-only. When an orchestrate run processes a signal,
|
|
213
|
+
the original record remains unchanged and the orchestrator rewrites the file
|
|
214
|
+
with `consumed: true` set on processed entries. This is the one exception
|
|
215
|
+
to strict append-only semantics in the log system — the rewrite is atomic
|
|
216
|
+
and race-protected by the orchestrate lockfile.
|
|
217
|
+
|
|
218
|
+
Consumed signal example:
|
|
219
|
+
|
|
220
|
+
```json
|
|
221
|
+
{
|
|
222
|
+
"timestamp": "2026-03-15T14:00:00.000Z",
|
|
223
|
+
"session_id": "abc123",
|
|
224
|
+
"query": "why didn't you use the commit skill?",
|
|
225
|
+
"signal_type": "correction",
|
|
226
|
+
"mentioned_skill": "commit",
|
|
227
|
+
"consumed": true,
|
|
228
|
+
"consumed_at": "2026-03-15T14:05:00.000Z",
|
|
229
|
+
"consumed_by_run": "run_1710511500000_a1b2c3"
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**signal_type values:**
|
|
234
|
+
- `correction` — User pointing out a missed skill ("why didn't you use X?", "you should have used X", "next time use X")
|
|
235
|
+
- `explicit_request` — User asking to use a skill ("please use the X skill", "use the commit skill")
|
|
236
|
+
- `manual_invocation` — Direct `/skill` invocation detected
|
|
237
|
+
|
|
238
|
+
**Detection:** Pure regex in `prompt-log.ts`, no LLM calls. Skill names are matched against installed skills in `~/.claude/skills/`.
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
80
242
|
## ~/.claude/evolution_audit_log.jsonl
|
|
81
243
|
|
|
82
244
|
One record per evolution action. Written by the evolution and rollback modules.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# selftune Setup Patterns
|
|
2
|
+
|
|
3
|
+
This reference keeps the core initialize workflow portable. Use it when the
|
|
4
|
+
user needs project-type-specific setup guidance after `selftune init`.
|
|
5
|
+
|
|
6
|
+
## Single-Skill Project
|
|
7
|
+
|
|
8
|
+
Use when the workspace has one primary `SKILL.md`.
|
|
9
|
+
|
|
10
|
+
- Merge `assets/single-skill-settings.json` into `~/.claude/settings.json`
|
|
11
|
+
- Keep the bundled `./settings_snippet.json` from the skill root nearby as the
|
|
12
|
+
minimal hook reference
|
|
13
|
+
- Verify with `selftune doctor`
|
|
14
|
+
|
|
15
|
+
## Multi-Skill Project
|
|
16
|
+
|
|
17
|
+
Use when the workspace has multiple `SKILL.md` files that coexist in one repo.
|
|
18
|
+
|
|
19
|
+
- Merge `assets/multi-skill-settings.json` into `~/.claude/settings.json`
|
|
20
|
+
- Copy `assets/activation-rules-default.json` to
|
|
21
|
+
`~/.selftune/activation-rules.json`
|
|
22
|
+
- Tune activation rules after `selftune doctor` reports healthy hooks
|
|
23
|
+
- Use `selftune workflows` once telemetry accumulates to discover repeated
|
|
24
|
+
multi-skill chains
|
|
25
|
+
|
|
26
|
+
## Monorepo
|
|
27
|
+
|
|
28
|
+
Use the same template as a multi-skill project, but run `selftune init` from
|
|
29
|
+
the repo root so hook paths and telemetry cover the whole workspace.
|
|
30
|
+
|
|
31
|
+
## Codex-Only
|
|
32
|
+
|
|
33
|
+
- Install the CLI and run `selftune init --agent codex`
|
|
34
|
+
- Use `selftune ingest wrap-codex -- <args>` for real-time capture or
|
|
35
|
+
`selftune ingest codex` for batch ingestion
|
|
36
|
+
- Use `selftune doctor` to verify the shared logs are healthy
|
|
37
|
+
|
|
38
|
+
## OpenCode-Only
|
|
39
|
+
|
|
40
|
+
- Run `selftune init --agent opencode`
|
|
41
|
+
- Use `selftune ingest opencode` to backfill session data into the shared logs
|
|
42
|
+
|
|
43
|
+
## OpenClaw-Only
|
|
44
|
+
|
|
45
|
+
- Run `selftune init --agent openclaw`
|
|
46
|
+
- Use `selftune ingest openclaw` for ingestion
|
|
47
|
+
- Use `selftune doctor` to verify the shared logs are healthy
|
|
48
|
+
- Use `selftune cron setup` if the user specifically wants OpenClaw-managed recurring runs
|
|
49
|
+
|
|
50
|
+
## Mixed-Agent Setup
|
|
51
|
+
|
|
52
|
+
Use when telemetry from Claude Code, Codex, OpenCode, or OpenClaw should be
|
|
53
|
+
combined.
|
|
54
|
+
|
|
55
|
+
- Initialize each platform against the same `~/.selftune/` data directory
|
|
56
|
+
- Ingest platform-specific logs into the shared JSONL schema
|
|
57
|
+
- Use `selftune schedule --install` for the default autonomous scheduler path
|
|
58
|
+
- Use `selftune status`, `selftune dashboard`, and `selftune workflows` on the
|
|
59
|
+
merged dataset
|
|
60
|
+
|
|
61
|
+
## Optional Repository Extensions
|
|
62
|
+
|
|
63
|
+
Some repositories also bundle Claude-specific helper agents in `.claude/agents/`
|
|
64
|
+
for diagnosis, evolution review, or setup help. These are optional extensions,
|
|
65
|
+
not part of the core skill package installed by `npx skills add`.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# selftune Skill Version History
|
|
2
|
+
|
|
3
|
+
This file is maintainer-facing. Keep operational instructions in
|
|
4
|
+
`../SKILL.md`; record version history here so the main skill stays focused on
|
|
5
|
+
agent execution.
|
|
6
|
+
|
|
7
|
+
## Versioning Rules
|
|
8
|
+
|
|
9
|
+
- Bump the version when command coverage, routing, or user-facing workflow
|
|
10
|
+
guidance changes in a meaningful way.
|
|
11
|
+
- Update the `metadata.version` and `metadata.last_updated` fields in
|
|
12
|
+
`../SKILL.md` at the same time.
|
|
13
|
+
- Record a short, high-signal summary here. Avoid duplicating the full skill
|
|
14
|
+
body.
|
|
15
|
+
|
|
16
|
+
## Change Log
|
|
17
|
+
|
|
18
|
+
### 0.2.2 — 2026-03-09
|
|
19
|
+
|
|
20
|
+
- Tightened the top-level skill description and added an explicit
|
|
21
|
+
`compatibility` field
|
|
22
|
+
- Surfaced the bundled badge workflow in quick reference, routing, and resource
|
|
23
|
+
index sections
|
|
24
|
+
- Moved setup-pattern guidance fully inside the skill package via
|
|
25
|
+
`references/setup-patterns.md`
|
|
26
|
+
- Bundled Claude settings and activation-rule templates under `assets/` so the
|
|
27
|
+
installed skill no longer depends on repository-level `templates/`
|
|
28
|
+
- Marked Claude-specific specialist agents as optional repository extensions
|
|
29
|
+
rather than part of the core installed skill
|
|
30
|
+
|
|
31
|
+
### 0.2.1 — 2026-03-09
|
|
32
|
+
|
|
33
|
+
- Added first-class routing and quick-reference coverage for
|
|
34
|
+
`selftune workflows`
|
|
35
|
+
- Added a dedicated `Workflows/Workflows.md` guide for workflow discovery and
|
|
36
|
+
codification
|
|
37
|
+
- Updated composability guidance to reflect synergy, conflicts, and workflow
|
|
38
|
+
candidates
|
|
39
|
+
- Synced workflow save documentation with the shipped
|
|
40
|
+
`<workflow-id|index>` behavior
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_readme": "Merge the 'hooks' block below into your ~/.claude/settings.json",
|
|
3
3
|
"_readme2": "Replace /PATH/TO/ with the actual directory where you saved the scripts",
|
|
4
|
-
"_readme3": "This is the comprehensive template.
|
|
4
|
+
"_readme3": "This is the comprehensive template. Portable single-skill and multi-skill variants are bundled in assets/",
|
|
5
5
|
|
|
6
6
|
"hooks": {
|
|
7
7
|
"UserPromptSubmit": [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_readme": "Settings template for multi-skill selftune projects. Merge into ~/.claude/settings.json.",
|
|
3
|
-
"_usage": "
|
|
3
|
+
"_usage": "These hooks use npx selftune, which works regardless of installation path.",
|
|
4
4
|
"_note": "Multi-skill projects use activation rules to route queries to the correct skill. See templates/activation-rules-default.json.",
|
|
5
5
|
|
|
6
6
|
"hooks": {
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
"hooks": [
|
|
10
10
|
{
|
|
11
11
|
"type": "command",
|
|
12
|
-
"command": "
|
|
12
|
+
"command": "npx selftune hook prompt-log",
|
|
13
13
|
"timeout": 5
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
"type": "command",
|
|
17
|
-
"command": "
|
|
17
|
+
"command": "npx selftune hook auto-activate",
|
|
18
18
|
"timeout": 5
|
|
19
19
|
}
|
|
20
20
|
]
|
|
@@ -26,12 +26,12 @@
|
|
|
26
26
|
"hooks": [
|
|
27
27
|
{
|
|
28
28
|
"type": "command",
|
|
29
|
-
"command": "
|
|
29
|
+
"command": "npx selftune hook skill-change-guard",
|
|
30
30
|
"timeout": 5
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"type": "command",
|
|
34
|
-
"command": "
|
|
34
|
+
"command": "npx selftune hook evolution-guard",
|
|
35
35
|
"timeout": 5
|
|
36
36
|
}
|
|
37
37
|
]
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"hooks": [
|
|
44
44
|
{
|
|
45
45
|
"type": "command",
|
|
46
|
-
"command": "
|
|
46
|
+
"command": "npx selftune hook skill-eval",
|
|
47
47
|
"timeout": 5
|
|
48
48
|
}
|
|
49
49
|
]
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"hooks": [
|
|
55
55
|
{
|
|
56
56
|
"type": "command",
|
|
57
|
-
"command": "
|
|
57
|
+
"command": "npx selftune hook session-stop",
|
|
58
58
|
"timeout": 15
|
|
59
59
|
}
|
|
60
60
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_readme": "Settings template for single-skill selftune projects. Merge into ~/.claude/settings.json.",
|
|
3
|
-
"_usage": "
|
|
3
|
+
"_usage": "These hooks use npx selftune, which works regardless of installation path.",
|
|
4
4
|
|
|
5
5
|
"hooks": {
|
|
6
6
|
"UserPromptSubmit": [
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
"hooks": [
|
|
9
9
|
{
|
|
10
10
|
"type": "command",
|
|
11
|
-
"command": "
|
|
11
|
+
"command": "npx selftune hook prompt-log",
|
|
12
12
|
"timeout": 5
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
"type": "command",
|
|
16
|
-
"command": "
|
|
16
|
+
"command": "npx selftune hook auto-activate",
|
|
17
17
|
"timeout": 5
|
|
18
18
|
}
|
|
19
19
|
]
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"hooks": [
|
|
26
26
|
{
|
|
27
27
|
"type": "command",
|
|
28
|
-
"command": "
|
|
28
|
+
"command": "npx selftune hook skill-change-guard",
|
|
29
29
|
"timeout": 5
|
|
30
30
|
}
|
|
31
31
|
]
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"hooks": [
|
|
38
38
|
{
|
|
39
39
|
"type": "command",
|
|
40
|
-
"command": "
|
|
40
|
+
"command": "npx selftune hook skill-eval",
|
|
41
41
|
"timeout": 5
|
|
42
42
|
}
|
|
43
43
|
]
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"hooks": [
|
|
49
49
|
{
|
|
50
50
|
"type": "command",
|
|
51
|
-
"command": "
|
|
51
|
+
"command": "npx selftune hook session-stop",
|
|
52
52
|
"timeout": 15
|
|
53
53
|
}
|
|
54
54
|
]
|