@tanstack/intent 0.1.0 → 0.2.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/README.md +0 -3
- package/dist/artifact-coverage-CXX6wav1.mjs +2 -0
- package/dist/{artifact-coverage-nGwun1tt.mjs → artifact-coverage-DFtI6V_H.mjs} +1 -3
- package/dist/{cli-error-BrMXlbtx.mjs → cli-error-DDAO6DIL.mjs} +1 -2
- package/dist/{cli-support-BevVu4gw.mjs → cli-support-BQSl7gAE.mjs} +8 -11
- package/dist/{cli-support-Cpo_9JfL.mjs → cli-support-DK1Kq8Ue.mjs} +2 -6
- package/dist/cli.d.mts +0 -1
- package/dist/cli.mjs +14 -16
- package/dist/{command-runner-fstUIUhe.mjs → command-runner-B5OofX0E.mjs} +1 -2
- package/dist/{core-6UP6jyL8.mjs → core-BRUBEMwe.mjs} +9 -13
- package/dist/core.d.mts +3 -4
- package/dist/core.mjs +2 -11
- package/dist/{display-CVMGtcHz.mjs → display-CnpA7XuV.mjs} +3 -7
- package/dist/{edit-package-json-DKyJ04t1.mjs → edit-package-json-D8xfcy2X.mjs} +1 -2
- package/dist/{exclude-BTaE6TNh.mjs → exclude-DbHwcgQQ.mjs} +6 -11
- package/dist/{excludes-DG83YEzb.mjs → excludes-ByvSbmmj.mjs} +3 -6
- package/dist/index.d.mts +3 -31
- package/dist/index.mjs +9 -280
- package/dist/{install-DXQsQQIL.mjs → install-CTGQvXoB.mjs} +18 -24
- package/dist/{list-CxB37mvm.mjs → list-9SbFGUd5.mjs} +5 -19
- package/dist/{load-Ch4UjIza.mjs → load-BY8vh7Gp.mjs} +4 -14
- package/dist/{meta-C-t9P5Ls.mjs → meta-CF4XIYOo.mjs} +3 -5
- package/dist/{package-manager-BUgTjW9Q.mjs → package-manager-Dw7lYcI0.mjs} +1 -3
- package/dist/{project-context-DBSibDPb.mjs → project-context-oi_m7paK.mjs} +2 -4
- package/dist/{resolver-CDbVXv4g.mjs → resolver-Uwx8B5jv.mjs} +4 -6
- package/dist/{scaffold-D2vwv9ls.mjs → scaffold-D8TAMXvs.mjs} +1 -3
- package/dist/{scanner-CRCZwhKS.mjs → scanner-qT_M6nV5.mjs} +9 -16
- package/dist/{setup-DW3pn0QW.d.mts → setup-CdfBc7Oe.d.mts} +0 -1
- package/dist/{setup-DpCYUVSf.mjs → setup-Cx1r2y-1.mjs} +3 -5
- package/dist/{setup-github-actions-emXSyGy3.mjs → setup-github-actions-IxZTZihi.mjs} +1 -2
- package/dist/setup.d.mts +1 -1
- package/dist/setup.mjs +3 -6
- package/dist/{skill-paths-B-j0dWDA.mjs → skill-paths-Bm1P6IYe.mjs} +2 -4
- package/dist/{skill-use-CUrNHf-u.mjs → skill-use-B2xRF1i9.mjs} +1 -2
- package/dist/{source-policy-DaImacFt.mjs → source-policy-DkR80hkL.mjs} +4 -7
- package/dist/source-policy-hMYcpIgm.mjs +2 -0
- package/dist/{stale-DxZyYibt.mjs → stale-DhjSTIt-.mjs} +3 -5
- package/dist/staleness-B5Cqe77_.mjs +2 -0
- package/dist/{staleness-DVFARTES.mjs → staleness-DoZU3lzy.mjs} +10 -17
- package/dist/{types-DhITOzhi.d.mts → types-P6UfPVdp.d.mts} +1 -33
- package/dist/{utils-9fhWAVua.mjs → utils-6FtqhOYf.mjs} +14 -3
- package/dist/utils-BKBDYbCx.mjs +2 -0
- package/dist/{validate-CnQBn6v9.mjs → validate-BSfTOq0v.mjs} +134 -47
- package/dist/{workflow-review-wL1Iu2Sf.mjs → workflow-review-B4AfwtHH.mjs} +1 -3
- package/dist/{workflow-review-CtOR1bgh.mjs → workflow-review-Bo2kPVXV.mjs} +2 -3
- package/dist/{workspace-patterns-BffPlZ1D.mjs → workspace-patterns-BDoJIWk-.mjs} +2 -4
- package/dist/workspace-patterns-CrL8hAbd.mjs +2 -0
- package/meta/domain-discovery/SKILL.md +1 -1
- package/meta/generate-skill/SKILL.md +35 -28
- package/meta/tree-generator/SKILL.md +43 -39
- package/package.json +5 -6
- package/dist/artifact-coverage-BfJ7f-S9.mjs +0 -3
- package/dist/source-policy-y3sktvzu.mjs +0 -9
- package/dist/staleness-BoFc6DMh.mjs +0 -5
- package/dist/utils-CSPzvaFu.mjs +0 -3
- package/dist/workspace-patterns-Bjq_cXww.mjs +0 -4
- package/meta/feedback-collection/SKILL.md +0 -234
|
@@ -52,7 +52,9 @@ SKILL.md into that package's skills directory (e.g.
|
|
|
52
52
|
`packages/client/skills/core/SKILL.md`), not a shared root.
|
|
53
53
|
|
|
54
54
|
1. **Skill name** — format `library-group/skill-name` (e.g. `tanstack-query/core`,
|
|
55
|
-
`tanstack-router/loaders`, `db/core/live-queries`)
|
|
55
|
+
`tanstack-router/loaders`, `db/core/live-queries`). This is the skill's
|
|
56
|
+
directory path: its **last segment** becomes the frontmatter `name` (a
|
|
57
|
+
spec-legal leaf), and the full path is where the `SKILL.md` lives.
|
|
56
58
|
2. **Skill description** — what the skill covers and when an agent should load it
|
|
57
59
|
3. **Source documentation** — the docs, guides, API references, and/or source
|
|
58
60
|
files to distill from
|
|
@@ -118,7 +120,7 @@ cannot already know:
|
|
|
118
120
|
|
|
119
121
|
Before writing the skill body, search the library's GitHub repo for issues
|
|
120
122
|
and discussions relevant to THIS skill's topic. This step is important for
|
|
121
|
-
both initial generation and regeneration —
|
|
123
|
+
both initial generation and regeneration — issue discussions reveal
|
|
122
124
|
failure modes that docs miss.
|
|
123
125
|
|
|
124
126
|
**Search strategy:**
|
|
@@ -170,17 +172,18 @@ domain-discovery — use those directly.
|
|
|
170
172
|
|
|
171
173
|
```yaml
|
|
172
174
|
---
|
|
173
|
-
name: [
|
|
175
|
+
name: '[skill-name]'
|
|
174
176
|
description: >
|
|
175
177
|
[1–3 sentences. What this skill covers and exactly when an agent should
|
|
176
178
|
load it. Written for the agent — include the keywords an agent would
|
|
177
179
|
encounter when it needs this skill. Dense routing key.]
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
180
|
+
metadata:
|
|
181
|
+
type: core
|
|
182
|
+
library: '[library]'
|
|
183
|
+
library_version: '[version this targets]'
|
|
181
184
|
sources:
|
|
182
|
-
-
|
|
183
|
-
-
|
|
185
|
+
- '[Owner/repo]:docs/[path].md'
|
|
186
|
+
- '[Owner/repo]:src/[path].ts'
|
|
184
187
|
---
|
|
185
188
|
```
|
|
186
189
|
|
|
@@ -188,14 +191,15 @@ sources:
|
|
|
188
191
|
|
|
189
192
|
```yaml
|
|
190
193
|
---
|
|
191
|
-
name: [
|
|
194
|
+
name: '[skill-name]'
|
|
192
195
|
description: >
|
|
193
196
|
[1–3 sentences. What this sub-topic covers and when to load it.]
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
+
metadata:
|
|
198
|
+
type: sub-skill
|
|
199
|
+
library: '[library]'
|
|
200
|
+
library_version: '[version]'
|
|
197
201
|
sources:
|
|
198
|
-
-
|
|
202
|
+
- '[Owner/repo]:docs/[path].md'
|
|
199
203
|
---
|
|
200
204
|
```
|
|
201
205
|
|
|
@@ -203,29 +207,39 @@ sources:
|
|
|
203
207
|
|
|
204
208
|
```yaml
|
|
205
209
|
---
|
|
206
|
-
name: [
|
|
210
|
+
name: '[framework]'
|
|
207
211
|
description: >
|
|
208
212
|
[1–3 sentences. Framework-specific bindings. Name the hooks, components,
|
|
209
213
|
providers.]
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
+
metadata:
|
|
215
|
+
type: framework
|
|
216
|
+
library: '[library]'
|
|
217
|
+
framework: '[react | vue | solid | svelte | angular]'
|
|
218
|
+
library_version: '[version]'
|
|
214
219
|
requires:
|
|
215
|
-
- [library]/core
|
|
220
|
+
- '[library]/core'
|
|
216
221
|
sources:
|
|
217
|
-
-
|
|
222
|
+
- '[Owner/repo]:docs/framework/[framework]/[path].md'
|
|
218
223
|
---
|
|
219
224
|
```
|
|
220
225
|
|
|
221
226
|
### Frontmatter rules
|
|
222
227
|
|
|
228
|
+
- `name` is the spec-legal leaf segment — lowercase letters, numbers, and
|
|
229
|
+
hyphens only — and matches the skill's parent directory. It carries no
|
|
230
|
+
slashes; the namespace lives in the skill's directory path instead.
|
|
231
|
+
- Intent-specific scalars (`type`, `library`, `library_version`, `framework`)
|
|
232
|
+
live under the `metadata` map. The Agent Skills spec permits only `name`,
|
|
233
|
+
`description`, `license`, `compatibility`, `metadata`, and `allowed-tools`
|
|
234
|
+
at the top level, so emitting these scalars at the top level fails
|
|
235
|
+
validation.
|
|
223
236
|
- `description` must be written so the agent loads this skill at the right
|
|
224
237
|
time — not too broad (triggers on everything) and not too narrow (never
|
|
225
238
|
triggers). Pack with function names, option names, concept keywords.
|
|
226
239
|
- `sources` uses the format `Owner/repo:relative-path`. Glob patterns are
|
|
227
240
|
supported (e.g. `TanStack/query:docs/framework/react/guides/*.md`).
|
|
228
|
-
- `library_version` is the version of the source library this skill
|
|
241
|
+
- `metadata.library_version` is the version of the source library this skill
|
|
242
|
+
targets.
|
|
229
243
|
- `requires` lists skills that must be loaded before this one.
|
|
230
244
|
|
|
231
245
|
---
|
|
@@ -443,11 +457,4 @@ Output is consumed by all major AI coding agents. To ensure consistency:
|
|
|
443
457
|
- Critical info at start or end of sections (not buried in middle)
|
|
444
458
|
- Each SKILL.md is self-contained except for declared `requires`
|
|
445
459
|
|
|
446
|
-
---
|
|
447
|
-
|
|
448
|
-
## Meta-skill feedback
|
|
449
|
-
|
|
450
|
-
After generating all skills, run the `skill-feedback-collection` skill to
|
|
451
|
-
capture feedback about the scaffolding process (domain-discovery,
|
|
452
|
-
tree-generator, and generate-skill).
|
|
453
460
|
```
|
|
@@ -287,14 +287,15 @@ framework-agnostic concepts and contains the sub-skill registry.
|
|
|
287
287
|
|
|
288
288
|
```yaml
|
|
289
289
|
---
|
|
290
|
-
name: [lib]-core
|
|
290
|
+
name: '[lib]-core'
|
|
291
291
|
description: >
|
|
292
292
|
[1–3 sentences. What this library does and the framework-agnostic
|
|
293
293
|
concepts it provides. Pack with keywords: function names, config
|
|
294
294
|
options, concepts. This is a routing key, not a human summary.]
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
295
|
+
metadata:
|
|
296
|
+
type: core
|
|
297
|
+
library: '[lib]'
|
|
298
|
+
library_version: '[version this targets]'
|
|
298
299
|
---
|
|
299
300
|
```
|
|
300
301
|
|
|
@@ -332,16 +333,17 @@ One SKILL.md per domain. Follow this structure exactly.
|
|
|
332
333
|
|
|
333
334
|
```yaml
|
|
334
335
|
---
|
|
335
|
-
name: [
|
|
336
|
+
name: '[domain-slug]'
|
|
336
337
|
description: >
|
|
337
338
|
[1–3 sentences. What this domain covers AND when to load it. Name
|
|
338
339
|
specific functions, options, or APIs. Dense routing key.]
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
340
|
+
metadata:
|
|
341
|
+
type: sub-skill
|
|
342
|
+
library: '[lib]'
|
|
343
|
+
library_version: '[version]'
|
|
342
344
|
sources:
|
|
343
|
-
-
|
|
344
|
-
-
|
|
345
|
+
- '[repo]:docs/[path].md'
|
|
346
|
+
- '[repo]:src/[path].ts'
|
|
345
347
|
---
|
|
346
348
|
```
|
|
347
349
|
|
|
@@ -452,17 +454,18 @@ framework-specific patterns and mistakes.
|
|
|
452
454
|
|
|
453
455
|
```yaml
|
|
454
456
|
---
|
|
455
|
-
name: react-[lib]
|
|
457
|
+
name: 'react-[lib]'
|
|
456
458
|
description: >
|
|
457
459
|
[1–3 sentences. React-specific bindings for [library]. Name the hooks,
|
|
458
460
|
components, and providers. Mention React-specific patterns like SSR
|
|
459
461
|
hydration if applicable.]
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
462
|
+
metadata:
|
|
463
|
+
type: framework
|
|
464
|
+
library: '[lib]'
|
|
465
|
+
framework: react
|
|
466
|
+
library_version: '[version]'
|
|
464
467
|
requires:
|
|
465
|
-
- [lib]-core
|
|
468
|
+
- '[lib]-core'
|
|
466
469
|
---
|
|
467
470
|
```
|
|
468
471
|
|
|
@@ -499,18 +502,18 @@ with the framework frontmatter:
|
|
|
499
502
|
|
|
500
503
|
```yaml
|
|
501
504
|
---
|
|
502
|
-
name:
|
|
505
|
+
name: '[domain-slug]'
|
|
503
506
|
description: >
|
|
504
507
|
[React-specific description for this domain.]
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
508
|
+
metadata:
|
|
509
|
+
type: sub-skill
|
|
510
|
+
library: '[lib]'
|
|
511
|
+
framework: react
|
|
512
|
+
library_version: '[version]'
|
|
509
513
|
requires:
|
|
510
|
-
- [lib]-core
|
|
511
|
-
- [lib]-core/[domain-slug]
|
|
514
|
+
- '[lib]-core'
|
|
515
|
+
- '[lib]-core/[domain-slug]'
|
|
512
516
|
---
|
|
513
|
-
|
|
514
517
|
This skill builds on [lib]-core/[domain-slug]. Read the core skill first.
|
|
515
518
|
```
|
|
516
519
|
|
|
@@ -556,19 +559,19 @@ framework hooks and providers).
|
|
|
556
559
|
|
|
557
560
|
```yaml
|
|
558
561
|
---
|
|
559
|
-
name:
|
|
562
|
+
name: '[lib-a]-[lib-b]'
|
|
560
563
|
description: >
|
|
561
564
|
[How lib-a and lib-b wire together. Name the specific integration
|
|
562
565
|
points: functions, hooks, patterns.]
|
|
563
|
-
|
|
564
|
-
|
|
566
|
+
metadata:
|
|
567
|
+
type: composition
|
|
568
|
+
library_version: '[version of primary lib]'
|
|
565
569
|
requires:
|
|
566
|
-
- [lib-a]-core
|
|
567
|
-
- react-[lib-a]
|
|
568
|
-
- [lib-b]-core
|
|
569
|
-
- react-[lib-b]
|
|
570
|
+
- '[lib-a]-core'
|
|
571
|
+
- 'react-[lib-a]'
|
|
572
|
+
- '[lib-b]-core'
|
|
573
|
+
- 'react-[lib-b]'
|
|
570
574
|
---
|
|
571
|
-
|
|
572
575
|
This skill requires familiarity with both [lib-a] and [lib-b].
|
|
573
576
|
Read their core and framework skills first.
|
|
574
577
|
```
|
|
@@ -601,15 +604,16 @@ for these skill types.
|
|
|
601
604
|
|
|
602
605
|
```yaml
|
|
603
606
|
---
|
|
604
|
-
name:
|
|
607
|
+
name: security
|
|
605
608
|
description: >
|
|
606
609
|
Go-live security validation for [library]. Checks [specific concerns].
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
610
|
+
metadata:
|
|
611
|
+
type: security
|
|
612
|
+
library: '[lib]'
|
|
613
|
+
framework: react
|
|
614
|
+
library_version: '[version]'
|
|
611
615
|
requires:
|
|
612
|
-
- react-[lib]
|
|
616
|
+
- 'react-[lib]'
|
|
613
617
|
---
|
|
614
618
|
```
|
|
615
619
|
|
|
@@ -702,7 +706,7 @@ Run when:
|
|
|
702
706
|
- The library has released a new version
|
|
703
707
|
- A maintainer reports skills produce outdated code
|
|
704
708
|
- A changelog or migration guide has been published since skill creation
|
|
705
|
-
-
|
|
709
|
+
- Issue reports indicate skill content is inaccurate
|
|
706
710
|
|
|
707
711
|
### Step 1 — Detect staleness
|
|
708
712
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/intent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Ship compositional knowledge for AI coding agents alongside your npm packages",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -28,14 +28,13 @@
|
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"cac": "^6.7.14",
|
|
30
30
|
"jsonc-parser": "^3.3.1",
|
|
31
|
-
"semver": "^7.
|
|
32
|
-
"yaml": "2.
|
|
31
|
+
"semver": "^7.8.4",
|
|
32
|
+
"yaml": "2.9.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/semver": "^7.7.1",
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"verdaccio": "^6.3.2"
|
|
36
|
+
"tsdown": "^0.22.2",
|
|
37
|
+
"verdaccio": "^6.7.2"
|
|
39
38
|
},
|
|
40
39
|
"scripts": {
|
|
41
40
|
"build": "tsdown src/index.ts src/cli.ts src/setup.ts src/core.ts --format esm --dts",
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import "./utils-9fhWAVua.mjs";
|
|
2
|
-
import "./skill-paths-B-j0dWDA.mjs";
|
|
3
|
-
import "./scanner-CRCZwhKS.mjs";
|
|
4
|
-
import "./workspace-patterns-BffPlZ1D.mjs";
|
|
5
|
-
import "./project-context-DBSibDPb.mjs";
|
|
6
|
-
import "./excludes-DG83YEzb.mjs";
|
|
7
|
-
import { a as checkLoadAllowed, i as applySourcePolicy, n as EMPTY_NOTE, o as readSkillSourcesConfig, r as MIGRATION_NOTICE, s as scanForPolicedIntents, t as ALLOW_ALL_NOTICE } from "./source-policy-DaImacFt.mjs";
|
|
8
|
-
|
|
9
|
-
export { scanForPolicedIntents };
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import "./utils-9fhWAVua.mjs";
|
|
2
|
-
import "./artifact-coverage-nGwun1tt.mjs";
|
|
3
|
-
import { n as checkStaleness, r as readPackageName, t as buildWorkspaceCoverageSignals } from "./staleness-DVFARTES.mjs";
|
|
4
|
-
|
|
5
|
-
export { buildWorkspaceCoverageSignals, checkStaleness, readPackageName };
|
package/dist/utils-CSPzvaFu.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { a as listNestedNodeModulesPackageDirs, c as parseFrontmatter, i as getDeps, l as resolveDepDir, n as detectGlobalNodeModules, o as listNodeModulesPackageDirs, r as findSkillFiles, s as nodeReadFs, t as createFsIdentityCache, u as toPosixPath } from "./utils-9fhWAVua.mjs";
|
|
2
|
-
|
|
3
|
-
export { createFsIdentityCache, detectGlobalNodeModules, findSkillFiles, getDeps, listNestedNodeModulesPackageDirs, listNodeModulesPackageDirs, nodeReadFs, parseFrontmatter, resolveDepDir, toPosixPath };
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import "./utils-9fhWAVua.mjs";
|
|
2
|
-
import { a as readWorkspacePatterns, i as getWorkspaceInfo, n as findWorkspacePackages, o as resolveWorkspacePackages, r as findWorkspaceRoot, t as findPackagesWithSkills } from "./workspace-patterns-BffPlZ1D.mjs";
|
|
3
|
-
|
|
4
|
-
export { findWorkspaceRoot, getWorkspaceInfo };
|
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: skill-feedback-collection
|
|
3
|
-
description: >
|
|
4
|
-
Collect structured feedback about skill usage after completing a coding task.
|
|
5
|
-
Activate at the end of any session where one or more SKILL.md files were
|
|
6
|
-
loaded. Captures agent signals (gaps, errors, corrections, human interventions)
|
|
7
|
-
and brief human input, then submits directly via gh CLI or provides manual
|
|
8
|
-
submission instructions.
|
|
9
|
-
metadata:
|
|
10
|
-
version: '2.0'
|
|
11
|
-
category: meta-tooling
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# Skill Feedback Collection
|
|
15
|
-
|
|
16
|
-
Run this at the end of any session where you loaded one or more SKILL.md files.
|
|
17
|
-
The goal is to capture what worked, what didn't, and what was missing — so skill
|
|
18
|
-
maintainers can improve future versions.
|
|
19
|
-
|
|
20
|
-
This skill also covers **meta-skill feedback** — feedback about the scaffolding
|
|
21
|
-
process itself. When invoked after running domain-discovery, tree-generator, and
|
|
22
|
-
generate-skill, treat those three meta skills as the "skills" being evaluated.
|
|
23
|
-
Capture what worked and what didn't in each scaffolding phase so the meta skills
|
|
24
|
-
can be improved.
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Phase 1 — Automated Signal Collection
|
|
29
|
-
|
|
30
|
-
Review your own session transcript. No human interaction needed yet.
|
|
31
|
-
|
|
32
|
-
### 1a: Skills inventory
|
|
33
|
-
|
|
34
|
-
Before analyzing gaps and errors, inventory all skills that were available
|
|
35
|
-
during the session:
|
|
36
|
-
|
|
37
|
-
- **Loaded and used:** Skills you read and actively followed.
|
|
38
|
-
- **Available but not loaded:** Skills that were installed (discoverable via
|
|
39
|
-
`npx @tanstack/intent@latest list`) but you never read. This is important — many issues stem from
|
|
40
|
-
the agent not loading the right skill, not from the skill itself being wrong.
|
|
41
|
-
|
|
42
|
-
### 1b: Gap detection
|
|
43
|
-
|
|
44
|
-
Identify moments where the skill was silent and you had to bridge the gap
|
|
45
|
-
yourself — via code reading, search, trial-and-error, or general knowledge.
|
|
46
|
-
|
|
47
|
-
For each gap, note:
|
|
48
|
-
|
|
49
|
-
- What you needed to do
|
|
50
|
-
- What the skill should have told you
|
|
51
|
-
- How you solved it (code reading, web search, guessing)
|
|
52
|
-
|
|
53
|
-
### 1c: Error/correction tracking
|
|
54
|
-
|
|
55
|
-
Identify moments where the skill prescribed an approach that produced an error.
|
|
56
|
-
|
|
57
|
-
For each error, note:
|
|
58
|
-
|
|
59
|
-
- What the skill said to do
|
|
60
|
-
- The error or incorrect behavior that resulted
|
|
61
|
-
- The fix you applied
|
|
62
|
-
|
|
63
|
-
### 1d: Human intervention events
|
|
64
|
-
|
|
65
|
-
Identify moments where the human clarified, corrected, or overrode your approach.
|
|
66
|
-
|
|
67
|
-
For each intervention, note:
|
|
68
|
-
|
|
69
|
-
- What you were doing when the human intervened
|
|
70
|
-
- What the human said or changed
|
|
71
|
-
- Whether the skill could have prevented this
|
|
72
|
-
|
|
73
|
-
### 1e: Step duration anomalies
|
|
74
|
-
|
|
75
|
-
Identify steps that consumed disproportionate effort compared to their apparent
|
|
76
|
-
complexity. These signal that the skill should provide a template, snippet, or
|
|
77
|
-
more detailed guidance.
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
## Phase 2 — Human Interview
|
|
82
|
-
|
|
83
|
-
Ask the human up to 4 questions. Keep it brief — skip questions if the session
|
|
84
|
-
already provided clear answers. Respect if they decline.
|
|
85
|
-
|
|
86
|
-
1. "Was anything unclear about what was happening during the task?"
|
|
87
|
-
2. "Did anything feel frustrating or take longer than expected?"
|
|
88
|
-
3. "Were you uncertain about the output quality at any point?"
|
|
89
|
-
4. "Anything you'd want done differently next time?"
|
|
90
|
-
|
|
91
|
-
Derive `userRating` from overall sentiment:
|
|
92
|
-
|
|
93
|
-
- Mostly positive → `good`
|
|
94
|
-
- Mixed signals → `mixed`
|
|
95
|
-
- Mostly negative → `bad`
|
|
96
|
-
|
|
97
|
-
If the human gives an explicit rating, use that instead.
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## Phase 3 — Build the Feedback
|
|
102
|
-
|
|
103
|
-
Write one Markdown feedback file per skill used. Only include skills that were
|
|
104
|
-
actually used during the session — skip any that were loaded but never
|
|
105
|
-
referenced.
|
|
106
|
-
|
|
107
|
-
### Template
|
|
108
|
-
|
|
109
|
-
```markdown
|
|
110
|
-
# Skill Feedback: [skill name from SKILL.md frontmatter]
|
|
111
|
-
|
|
112
|
-
**Package:** [npm package name that contains the skill]
|
|
113
|
-
**Skill version:** [metadata.version or library_version from frontmatter]
|
|
114
|
-
**Rating:** [good | mixed | bad]
|
|
115
|
-
|
|
116
|
-
## Task
|
|
117
|
-
|
|
118
|
-
[one-sentence summary of what the human asked you to do]
|
|
119
|
-
|
|
120
|
-
## Skills Inventory
|
|
121
|
-
|
|
122
|
-
**Loaded and used:**
|
|
123
|
-
|
|
124
|
-
- [list each skill the agent read and actively followed during the session]
|
|
125
|
-
|
|
126
|
-
**Available but not loaded:**
|
|
127
|
-
|
|
128
|
-
- [list skills that were installed/available but the agent never read]
|
|
129
|
-
|
|
130
|
-
## What Worked
|
|
131
|
-
|
|
132
|
-
[patterns/instructions from the skill that were accurate and helpful]
|
|
133
|
-
|
|
134
|
-
## What Failed
|
|
135
|
-
|
|
136
|
-
[from 1c — skill instructions that produced errors]
|
|
137
|
-
|
|
138
|
-
## Missing
|
|
139
|
-
|
|
140
|
-
[from 1b — gaps where the skill should have covered]
|
|
141
|
-
|
|
142
|
-
## Self-Corrections
|
|
143
|
-
|
|
144
|
-
[from 1c fixes + 1d human interventions, combined]
|
|
145
|
-
|
|
146
|
-
## User Comments
|
|
147
|
-
|
|
148
|
-
[optional — direct quotes or paraphrased human input from Phase 2]
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
### Field derivation guide
|
|
152
|
-
|
|
153
|
-
| Field | Source |
|
|
154
|
-
| ---------------- | ------------------------------------------------------------------ |
|
|
155
|
-
| Skill name | Frontmatter `name` field of the SKILL.md you loaded |
|
|
156
|
-
| Package | The npm package the skill lives in (e.g. `@tanstack/query-intent`) |
|
|
157
|
-
| Skill version | Frontmatter `metadata.version` or `library_version` |
|
|
158
|
-
| Task | Summarize the human's original request in one sentence |
|
|
159
|
-
| Skills Inventory | Which skills were loaded vs. available but not loaded (see below) |
|
|
160
|
-
| What Worked | List skill sections/patterns that were correct and useful |
|
|
161
|
-
| What Failed | From 1c — skill instructions that produced errors |
|
|
162
|
-
| Missing | From 1b — gaps where the skill was silent |
|
|
163
|
-
| Self-Corrections | From 1c fixes + 1d human interventions, combined |
|
|
164
|
-
| Rating | From Phase 2 sentiment analysis or explicit rating |
|
|
165
|
-
| User Comments | From Phase 2 answers, keep brief |
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
## Phase 4 — Submit
|
|
170
|
-
|
|
171
|
-
Determine the target repo from the skill's package. The repo is typically
|
|
172
|
-
derivable from the `repository` field in the package's `package.json`, or
|
|
173
|
-
from the `sources` field in the SKILL.md frontmatter.
|
|
174
|
-
|
|
175
|
-
### Link to existing issues/discussions
|
|
176
|
-
|
|
177
|
-
Before creating a new issue, search the target repo for existing issues or
|
|
178
|
-
discussions that match the feedback. Use `gh search issues` or the GitHub
|
|
179
|
-
web search with keywords from the "What Failed" and "Missing" sections.
|
|
180
|
-
|
|
181
|
-
- If an **open issue** already describes the same problem, comment on it
|
|
182
|
-
with the feedback instead of creating a duplicate. Reference the skill
|
|
183
|
-
name and version in your comment.
|
|
184
|
-
- If a **closed issue** describes a problem the skill still gets wrong
|
|
185
|
-
(regression or stale skill content), reference the closed issue in the
|
|
186
|
-
new feedback issue body: `Related to #[number] — this was fixed in the
|
|
187
|
-
library but the skill still describes the old behavior.`
|
|
188
|
-
- If a **discussion thread** covers the same topic, link to it in the
|
|
189
|
-
feedback issue body so maintainers can see the community context.
|
|
190
|
-
|
|
191
|
-
This prevents duplicate issues and gives maintainers richer context for
|
|
192
|
-
improving skills.
|
|
193
|
-
|
|
194
|
-
### Privacy check
|
|
195
|
-
|
|
196
|
-
Before submitting, determine whether the user's project is public or private.
|
|
197
|
-
Check with `gh repo view --json visibility` or look for a `private` field in
|
|
198
|
-
the project's `package.json`. If you can't determine visibility, assume private.
|
|
199
|
-
|
|
200
|
-
**Private repos:** Feedback is submitted to a public issue tracker, so it must
|
|
201
|
-
not contain project-specific details. Before submission:
|
|
202
|
-
|
|
203
|
-
1. Strip any project-specific code, file paths, internal API names, service
|
|
204
|
-
URLs, or business logic from all fields
|
|
205
|
-
2. Rewrite the "Task" field to describe the _type_ of task generically
|
|
206
|
-
(e.g. "set up authenticated data fetching" not "set up auth for our
|
|
207
|
-
internal billing API at api.acme.corp/billing")
|
|
208
|
-
3. Rewrite "What Failed" and "Missing" entries to reference only the
|
|
209
|
-
skill's own APIs and patterns, not the user's code
|
|
210
|
-
4. Show the sanitized feedback to the user and ask them to confirm it's
|
|
211
|
-
safe to submit before proceeding
|
|
212
|
-
|
|
213
|
-
**Public repos:** No sanitization needed. Proceed directly to submission.
|
|
214
|
-
|
|
215
|
-
### If `gh` CLI is available
|
|
216
|
-
|
|
217
|
-
Submit directly as a GitHub issue:
|
|
218
|
-
|
|
219
|
-
```bash
|
|
220
|
-
gh issue create --repo [owner/repo] --title "Skill Feedback: [skill-name] ([rating])" --label "skill:[skill-name]" --body-file intent-feedback.md
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
If the label doesn't exist, omit the `--label` flag — don't let a missing
|
|
224
|
-
label block submission.
|
|
225
|
-
|
|
226
|
-
If submission succeeds, delete the feedback file.
|
|
227
|
-
|
|
228
|
-
### If `gh` CLI is not available
|
|
229
|
-
|
|
230
|
-
Tell the human:
|
|
231
|
-
|
|
232
|
-
> "I've written skill feedback to `intent-feedback.md`. To submit it,
|
|
233
|
-
> open an issue at https://github.com/[owner/repo]/issues and paste the
|
|
234
|
-
> contents."
|