You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Rename "Skills as side quests" → "The copy-paste era" to match section content
- Move the training-data version-mixing argument up into the intro section
where it hits harder, right after the core idea
- Add audience transition sentence between maintainer and consumer sections
- Add concrete YAML example to "From skills to intents" section
- Cut redundant lifecycle summary sentence from closing — end on the
strong "correct patterns absorbed in real work" line
- Fix all CLI commands to use `npx @tanstack/intent <command>` form
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: src/blog/from-docs-to-agents.md
+41-29Lines changed: 41 additions & 29 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,7 @@ Your docs are good. Your types are solid. Your agent still gets it wrong.
10
10
11
11
Not because it's dumb — because nothing connects what you know about your tool to what agents know. Docs target humans who browse. Types check individual API calls but can't encode intent. Training data snapshots the ecosystem as it *was*, mixing versions without flagging which applies. The gap isn't content. It's lifecycle.
12
12
13
-
## Skills as side quests
13
+
## The copy-paste era
14
14
15
15
The ecosystem already moves toward agent-readable knowledge. Cursor rules, CLAUDE.md files, skills directories — everyone agrees agents need more than docs and types. But delivery hasn't caught up.
16
16
@@ -34,6 +34,10 @@ pnpm add -D @tanstack/intent
34
34
35
35
The core idea: **intents are npm packages of skills.** They encode how tools compose, which patterns fit which goals, and what to avoid. Skills travel with the tool via `npm update` — not the model's training cutoff, not community-maintained rules files, not prompt snippets in READMEs. Versioned knowledge the maintainer owns, updated when the package updates.
36
36
37
+
This matters because the alternative — hoping model providers re-train on your latest docs — is not a strategy. Training data has a permanent version-mixing problem: once a breaking change ships, models contain *both* versions forever with no way to disambiguate. Skills bypass this. They're versioned with your package, and `npm update` brings the latest knowledge with the latest code.
38
+
39
+

40
+
37
41
A skill is a focused projection of knowledge you already maintain: the critical constraint, the flagged anti-pattern, the composition rule stated once and clearly. Each declares its source docs:
38
42
39
43
```
@@ -54,80 +58,90 @@ That `metadata.sources` field is load-bearing. When those docs change, the CLI f
54
58
55
59
## Generating and validating skills
56
60
57
-
You don't author skills from scratch. `intent scaffold` generates them from your library:
61
+
You don't author skills from scratch. `@tanstack/intent scaffold` generates them from your library:
58
62
59
63
```bash
60
-
npx intent scaffold
64
+
npx @tanstack/intent scaffold
61
65
```
62
66
63
-
The scaffold produces drafts you review, refine, and commit. Once committed, `intent validate` checks that they're well-formed:
67
+
The scaffold produces drafts you review, refine, and commit. Once committed, `@tanstack/intent validate` checks that they're well-formed:
64
68
65
69
```bash
66
-
npx intent validate
70
+
npx @tanstack/intent validate
67
71
```
68
72
69
-
`intent setup` copies CI workflow templates into your repo so validation runs on every push:
73
+
`@tanstack/intent setup` copies CI workflow templates into your repo so validation runs on every push:
70
74
71
75
```bash
72
-
npx intent setup
76
+
npx @tanstack/intent setup
73
77
```
74
78
75
-
The alternative — hoping model providers re-train on your latest docs — is not a strategy. Training data has a permanent version-mixing problem: once a breaking change ships, models contain *both* versions forever with no way to disambiguate. Skills bypass this. They're versioned with your package, and `npm update` brings the latest knowledge with the latest code.
76
-
77
-

78
-
79
79
## The dependency graph does the discovery
80
80
81
-
When a developer runs `intent install`, the CLI discovers every intent-enabled package and wires skills into the agent configuration — CLAUDE.md, .cursorrules, whatever the tooling expects.
81
+
That's the maintainer side. For developers using those libraries, the experience is simpler.
82
+
83
+
When a developer runs `@tanstack/intent install`, the CLI discovers every intent-enabled package and wires skills into the agent configuration — CLAUDE.md, .cursorrules, whatever the tooling expects.
82
84
83
85
```bash
84
-
npx intent install
86
+
npx @tanstack/intent install
85
87
```
86
88
87
89

88
90
89
-
No per-library setup. No hunting for rules files. Install the package, run `intent install`, and the agent understands the tool. Update the package, and skills update too. Knowledge travels the same channel as code.
91
+
No per-library setup. No hunting for rules files. Install the package, run `@tanstack/intent install`, and the agent understands the tool. Update the package, and skills update too. Knowledge travels the same channel as code.
90
92
91
-
`intent list` shows you what's available:
93
+
`@tanstack/intent list` shows you what's available:
92
94
93
95
```bash
94
-
npx intent list # See what's intent-enabled in your deps
95
-
npx intent list --json # Machine-readable output
96
+
npx @tanstack/intent list # See what's intent-enabled in your deps
97
+
npx @tanstack/intent list --json # Machine-readable output
96
98
```
97
99
98
-
For library maintainers, `intent meta` surfaces meta-skills — higher-level guidance on authoring and maintaining skills:
100
+
For library maintainers, `@tanstack/intent meta` surfaces meta-skills — higher-level guidance on authoring and maintaining skills:
99
101
100
102
```bash
101
-
npx intent meta
103
+
npx @tanstack/intent meta
102
104
```
103
105
104
106
## From skills to intents
105
107
106
108
A single skill helps an agent use one tool correctly. Real development demands composition — routing *with* server state *with* a data grid *with* client-side storage. No single skill covers how they fit together.
107
109
108
-
Intents orchestrate. A developer says "build a paginated data table with URL-synced filters" and the intent loads the right skills in the right order — search params, loader/query integration, table columnDefs. Goals map to skill combinations.
110
+
Intents are the orchestration layer. A developer says "build a paginated data table with URL-synced filters" and the intent loads the right skills in the right order:
109
111
110
-
The more libraries that ship skills, the richer composition becomes.
112
+
```
113
+
---
114
+
name: paginated-data-table
115
+
description: URL-synced paginated data table with TanStack Router, Query, and Table
116
+
skills:
117
+
- tanstack-router-search-params
118
+
- tanstack-query-loader-integration
119
+
- tanstack-table-column-defs
120
+
- tanstack-table-pagination
121
+
---
122
+
```
123
+
124
+
Developer goals map to skill combinations. The more libraries in your stack that ship skills, the richer composition becomes.
111
125
112
126
## Keeping it current
113
127
114
128
The real risk with any derived artifact is staleness. You update your docs, ship a new API, and skills silently drift. `@tanstack/intent` treats staleness as a first-class problem.
115
129
116
-
`intent stale` checks for version drift, flagging skills that have fallen behind their sources:
130
+
`@tanstack/intent stale` checks for version drift, flagging skills that have fallen behind their sources:
117
131
118
132
```bash
119
-
npx intent stale # Human-readable report
120
-
npx intent stale --json # Machine-readable for CI
133
+
npx @tanstack/intent stale # Human-readable report
134
+
npx @tanstack/intent stale --json # Machine-readable for CI
121
135
```
122
136
123
137
Run it in CI and you get a failing check when sources change. Skills become part of your release checklist — not something you remember to update, but something your pipeline catches.
124
138
125
139

126
140
127
-
The feedback loop runs both directions. `intent feedback` lets users submit structured reports when a skill produces wrong output — which skill, which version, what broke. That context flows back to you, and the fix ships to everyone on the next `npm update`.
141
+
The feedback loop runs both directions. `@tanstack/intent feedback` lets users submit structured reports when a skill produces wrong output — which skill, which version, what broke. That context flows back to you, and the fix ships to everyone on the next `npm update`.
128
142
129
143
```bash
130
-
npx intent feedback
144
+
npx @tanstack/intent feedback
131
145
```
132
146
133
147
Skills that keep needing the same workaround signal a deeper problem. Sometimes the fix is a better skill. Sometimes it's a better API. A skill that dissolves because the tool absorbed its lesson is the system working.
@@ -136,6 +150,4 @@ Skills that keep needing the same workaround signal a deeper problem. Sometimes
136
150
137
151
Devtool makers have a new surface to maintain. You shipped code, docs, and types. Now there's a fourth artifact: skills — knowledge encoded for the thing writing most of your code.
138
152
139
-
Tools that invest here produce developers who build confidently from day one — not through tutorials or toy projects, but through correct patterns absorbed in real work.
140
-
141
-
The lifecycle is: write your docs, generate skills, ship them with your package, validate and keep them current, learn from how they're used, make your tool better. Repeat.
153
+
Tools that invest here produce developers who build confidently from day one — not through tutorials or toy projects, but through correct patterns absorbed in real work.
0 commit comments