Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/valid-release-skills.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@tanstack/intent': patch
---

Make the shipped meta-skills pass Intent validation. Match names to their existing directories, use string metadata, and move detailed procedures and templates into packaged references without changing the meta command names. Resolve relative Markdown links in `intent meta <name>` output so reference paths work from the caller's directory.
5 changes: 5 additions & 0 deletions .changeset/workspace-policy-boundary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@tanstack/intent': patch
---

Reject unreadable and malformed ancestor package manifests while discovering workspace policy, so a nested application's allowlist cannot bypass inherited restrictions when the workspace root is unreadable. Stop ancestor discovery at the first workspace declaration or Git repository boundary, checking that directory's manifest before stopping. Without an independent boundary, malformed ancestors fail closed and identify the file to repair.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ es
artifacts
.rpt2_cache
coverage
.vitest
*.tgz

# misc
Expand Down
2 changes: 1 addition & 1 deletion benchmarks/intent/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"devDependencies": {
"@codspeed/vitest-plugin": "^5.5.0",
"typescript": "6.0.3",
"vitest": "5.0.0"
"vitest": "4.1.8"
},
"nx": {
"targets": {
Expand Down
1 change: 1 addition & 0 deletions benchmarks/intent/vitest.config.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import codspeedPlugin from '@codspeed/vitest-plugin'
import { defineConfig } from 'vitest/config'

// CodSpeed's runner requires Vitest 4; the root test suite stays on Vitest 5.
export default defineConfig({
plugins: [
!!(process.env.VITEST && process.env.WITH_INSTRUMENTATION) &&
Expand Down
66 changes: 34 additions & 32 deletions docs/cli/intent-meta.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,34 @@
---
title: intent meta
id: intent-meta
---

`intent meta` lists bundled meta-skills or prints one meta-skill file.

```bash
npx @tanstack/intent@latest meta
npx @tanstack/intent@latest meta <name>
```

## Arguments

- `<name>` is a meta-skill directory under `node_modules/@tanstack/intent/meta/`
- Rejected values: any name containing `..`, `/`, or `\\`

## Output

- Without `<name>`:
- one line per meta-skill
- `name` + description from frontmatter
- description is normalized and truncated to 60 characters
- With `<name>`:
- raw markdown from `meta/<name>/SKILL.md`

## Common errors

- Meta directory not found
- Invalid `<name>` format
- Unknown `<name>` (message suggests running `npx @tanstack/intent meta`)
- Read failure for target `SKILL.md`
---
title: intent meta
id: intent-meta
---

`intent meta` lists bundled meta-skills or prints one meta-skill file.

```bash
npx @tanstack/intent@latest meta
npx @tanstack/intent@latest meta <name>
```

## Arguments

- `<name>` is a meta-skill directory under `node_modules/@tanstack/intent/meta/`
- Rejected values: any name containing `..`, `/`, or `\\`

## Output

- Without `<name>`:
- one line per meta-skill
- `name` + description from frontmatter
- description is normalized and truncated to 60 characters
- With `<name>`:
- Markdown from `meta/<name>/SKILL.md`
- relative links within the package resolve from the caller's directory, using absolute paths when needed
- reference files remain separate and are read only when their linked procedure is needed

## Common errors

- Meta directory not found
- Invalid `<name>` format
- Unknown `<name>` (message suggests running `npx @tanstack/intent meta`)
- Read failure for target `SKILL.md`
4 changes: 3 additions & 1 deletion docs/concepts/trust-model.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@ Default `intent install` handles this state through interactive permission setup

Intent stops policy-controlled listing, loading, and installation when a policy `package.json` cannot be read, contains invalid JSON, or is not a JSON object. The error names the file. Repair or restore that file, then retry the command.

This also applies to inherited policy within a resolved workspace. Malformed JSON that prevents discovery from identifying the workspace root itself remains a [known limitation](https://github.com/TanStack/intent/issues/240).
This also applies while finding the workspace root: an unreadable or malformed ancestor `package.json` cannot be skipped, because it may contain inherited restrictions. Repair or restore the named manifest before retrying.

Workspace discovery checks ancestors up to the first workspace declaration or Git repository boundary (`.git` directory or worktree file), including that directory's manifest. It does not inspect manifests above that boundary. Without either boundary, an invalid ancestor stops discovery even if the nearest package is intended to be standalone; Intent cannot determine from an unreadable manifest whether it owns workspace policy. A nested Git repository is treated as a separate project.

## First-run permission review

Expand Down
5 changes: 5 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,11 @@
"test:sherif"
]
},
"sherif": {
"ignoreDependency": [
"vitest@4.1.8"
]
},
"devDependencies": {
"@changesets/changelog-github": "^0.7.0",
"@changesets/cli": "^2.31.0",
Expand Down
Loading
Loading