From ea7db461a57803cde77f09010d9d5c7137bda53a Mon Sep 17 00:00:00 2001 From: Kyle Mathews Date: Tue, 3 Mar 2026 10:00:49 -0700 Subject: [PATCH 1/2] fix: resolve type errors and add type checking to CI Add test:types script to the intent package and wire root-level tsc into the test:ci and test:pr pipelines so type errors are caught on every PR. Fixes Dirent issues from @types/node v25, narrows regex match groups for noUncheckedIndexedAccess, and excludes eslint.config.js from root type checking due to non-portable inferred types. Co-Authored-By: Claude Opus 4.6 --- package.json | 4 ++-- packages/intent/package.json | 3 ++- packages/intent/src/intent-library.ts | 2 +- packages/intent/src/library-scanner.ts | 5 +++-- packages/intent/src/scanner.ts | 17 +++++++++-------- packages/intent/src/utils.ts | 2 +- scripts/validate-skills.ts | 4 ++-- tsconfig.json | 3 ++- 8 files changed, 22 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index 6b7eb35..54cc617 100644 --- a/package.json +++ b/package.json @@ -23,14 +23,14 @@ "lint:fix": "nx affected --target=lint:fix --exclude=examples/**", "lint:fix:all": "nx run-many --targets=lint --fix", "test": "pnpm run test:ci", - "test:ci": "nx run-many --targets=test:eslint,test:sherif,test:knip,test:docs,test:lib,test:types,build", + "test:ci": "tsc --noEmit && nx run-many --targets=test:eslint,test:sherif,test:knip,test:docs,test:lib,test:types,build", "generate-docs": "node scripts/generate-docs.ts", "test:docs": "node scripts/verify-links.ts", "test:eslint": "nx affected --target=test:eslint --exclude=examples/**", "test:knip": "knip", "test:lib": "nx affected --targets=test:lib --exclude=examples/**", "test:lib:dev": "pnpm test:lib && nx watch --all -- pnpm test:lib", - "test:pr": "nx affected --targets=test:eslint,test:sherif,test:knip,test:docs,test:lib,test:types,build", + "test:pr": "tsc --noEmit && nx affected --targets=test:eslint,test:sherif,test:knip,test:docs,test:lib,test:types,build", "test:sherif": "sherif", "test:types": "nx affected --targets=test:types --exclude=examples/**", "watch": "pnpm run build:all && nx watch --all -- pnpm run build:all" diff --git a/packages/intent/package.json b/packages/intent/package.json index 013a3d0..265a956 100644 --- a/packages/intent/package.json +++ b/packages/intent/package.json @@ -33,6 +33,7 @@ }, "scripts": { "build": "tsdown src/index.ts src/cli.ts src/setup.ts src/intent-library.ts src/library-scanner.ts --format esm --dts", - "test:lib": "vitest run" + "test:lib": "vitest run", + "test:types": "tsc --noEmit" } } diff --git a/packages/intent/src/intent-library.ts b/packages/intent/src/intent-library.ts index f0e2984..93e93db 100644 --- a/packages/intent/src/intent-library.ts +++ b/packages/intent/src/intent-library.ts @@ -12,7 +12,7 @@ import { scanLibrary } from './library-scanner.js' async function cmdList(): Promise { let result: LibraryScanResult try { - result = await scanLibrary(process.argv[1]) + result = await scanLibrary(process.argv[1]!) } catch (err) { console.error((err as Error).message) process.exit(1) diff --git a/packages/intent/src/library-scanner.ts b/packages/intent/src/library-scanner.ts index 7f5fe2a..4ca7bee 100644 --- a/packages/intent/src/library-scanner.ts +++ b/packages/intent/src/library-scanner.ts @@ -1,3 +1,4 @@ +import type { Dirent } from 'node:fs' import { existsSync, readdirSync, readFileSync } from 'node:fs' import { dirname, join, relative, sep } from 'node:path' import type { SkillEntry } from './types.js' @@ -64,9 +65,9 @@ function discoverSkills(skillsDir: string): SkillEntry[] { const skills: SkillEntry[] = [] function walk(dir: string): void { - let entries: ReturnType + let entries: Dirent[] try { - entries = readdirSync(dir, { withFileTypes: true }) + entries = readdirSync(dir, { withFileTypes: true, encoding: 'utf8' }) } catch { return } diff --git a/packages/intent/src/scanner.ts b/packages/intent/src/scanner.ts index 870f89b..b4cca6f 100644 --- a/packages/intent/src/scanner.ts +++ b/packages/intent/src/scanner.ts @@ -1,3 +1,4 @@ +import type { Dirent } from 'node:fs' import { existsSync, readdirSync, readFileSync } from 'node:fs' import { join, relative, sep } from 'node:path' import type { @@ -43,7 +44,7 @@ function detectPackageManager(root: string): PackageManager { // --------------------------------------------------------------------------- function validateIntentField( - pkgName: string, + _pkgName: string, intent: unknown, ): IntentConfig | null { if (!intent || typeof intent !== 'object') return null @@ -69,13 +70,13 @@ function validateIntentField( // Skill discovery within a package // --------------------------------------------------------------------------- -function discoverSkills(skillsDir: string, baseName: string): SkillEntry[] { +function discoverSkills(skillsDir: string, _baseName: string): SkillEntry[] { const skills: SkillEntry[] = [] function walk(dir: string): void { - let entries: ReturnType + let entries: Dirent[] try { - entries = readdirSync(dir, { withFileTypes: true }) + entries = readdirSync(dir, { withFileTypes: true, encoding: 'utf8' }) } catch { return } @@ -153,9 +154,9 @@ export async function scanForIntents(root?: string): Promise { // Collect all package directories to check const packageDirs: Array<{ dirPath: string }> = [] - let topEntries: ReturnType + let topEntries: Dirent[] try { - topEntries = readdirSync(nodeModulesDir, { withFileTypes: true }) + topEntries = readdirSync(nodeModulesDir, { withFileTypes: true, encoding: 'utf8' }) } catch { return { packageManager, packages, warnings } } @@ -166,9 +167,9 @@ export async function scanForIntents(root?: string): Promise { if (entry.name.startsWith('@')) { // Scoped package — check children - let scopedEntries: ReturnType + let scopedEntries: Dirent[] try { - scopedEntries = readdirSync(dirPath, { withFileTypes: true }) + scopedEntries = readdirSync(dirPath, { withFileTypes: true, encoding: 'utf8' }) } catch { continue } diff --git a/packages/intent/src/utils.ts b/packages/intent/src/utils.ts index ae85a9e..4c2dadb 100644 --- a/packages/intent/src/utils.ts +++ b/packages/intent/src/utils.ts @@ -32,7 +32,7 @@ export function parseFrontmatter( return null } const match = content.match(/^---\r?\n([\s\S]*?)\r?\n---/) - if (!match) return null + if (!match?.[1]) return null try { return parseYaml(match[1]) as Record } catch { diff --git a/scripts/validate-skills.ts b/scripts/validate-skills.ts index ea56ce4..b90bd7c 100644 --- a/scripts/validate-skills.ts +++ b/scripts/validate-skills.ts @@ -68,11 +68,11 @@ function extractFrontmatter( content: string, ): { frontmatter: SkillFrontmatter; body: string } | null { const match = content.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n([\s\S]*)/) - if (!match) return null + if (!match?.[1]) return null try { const frontmatter = parseYaml(match[1]) as SkillFrontmatter - return { frontmatter, body: match[2] } + return { frontmatter, body: match[2] ?? '' } } catch { return null } diff --git a/tsconfig.json b/tsconfig.json index c4e9c3a..c62fbb9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -24,5 +24,6 @@ "target": "ES2020", "noErrorTruncation": true }, - "include": ["scripts", "*.config.*", "vitest.workspace.js"] + "include": ["scripts", "*.config.*", "vitest.workspace.js"], + "exclude": ["eslint.config.js"] } From e31cff0402c7169cee15cbf0bfcc76db753ba276 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Tue, 3 Mar 2026 17:01:54 +0000 Subject: [PATCH 2/2] ci: apply automated fixes --- docs/intent/functions/checkStaleness.md | 26 +++++ docs/intent/functions/containsSecrets.md | 22 ++++ docs/intent/functions/detectAgentConfigs.md | 22 ++++ docs/intent/functions/findSkillFiles.md | 24 ++++ docs/intent/functions/hasGhCli.md | 16 +++ docs/intent/functions/hasIntentBlock.md | 22 ++++ docs/intent/functions/injectIntentBlock.md | 22 ++++ docs/intent/functions/metaToMarkdown.md | 22 ++++ docs/intent/functions/parseFrontmatter.md | 24 ++++ docs/intent/functions/readProjectConfig.md | 22 ++++ docs/intent/functions/resolveFrequency.md | 22 ++++ docs/intent/functions/runInit.md | 22 ++++ docs/intent/functions/runSetup.md | 33 ++++++ docs/intent/functions/scanForIntents.md | 22 ++++ docs/intent/functions/submitFeedback.md | 39 +++++++ docs/intent/functions/submitMetaFeedback.md | 32 ++++++ docs/intent/functions/toMarkdown.md | 22 ++++ docs/intent/functions/validateMetaPayload.md | 34 ++++++ docs/intent/functions/validatePayload.md | 34 ++++++ docs/intent/functions/writeProjectConfig.md | 22 ++++ docs/intent/index.md | 46 ++++++++ docs/intent/interfaces/FeedbackPayload.md | 108 ++++++++++++++++++ docs/intent/interfaces/IntentConfig.md | 48 ++++++++ docs/intent/interfaces/IntentPackage.md | 48 ++++++++ docs/intent/interfaces/IntentProjectConfig.md | 24 ++++ docs/intent/interfaces/MetaFeedbackPayload.md | 108 ++++++++++++++++++ docs/intent/interfaces/ScanResult.md | 38 ++++++ docs/intent/interfaces/SkillEntry.md | 58 ++++++++++ docs/intent/interfaces/SkillStaleness.md | 38 ++++++ docs/intent/interfaces/StalenessReport.md | 58 ++++++++++ docs/intent/type-aliases/AgentName.md | 12 ++ docs/intent/type-aliases/MetaSkillName.md | 16 +++ packages/intent/src/scanner.ts | 10 +- 33 files changed, 1114 insertions(+), 2 deletions(-) create mode 100644 docs/intent/functions/checkStaleness.md create mode 100644 docs/intent/functions/containsSecrets.md create mode 100644 docs/intent/functions/detectAgentConfigs.md create mode 100644 docs/intent/functions/findSkillFiles.md create mode 100644 docs/intent/functions/hasGhCli.md create mode 100644 docs/intent/functions/hasIntentBlock.md create mode 100644 docs/intent/functions/injectIntentBlock.md create mode 100644 docs/intent/functions/metaToMarkdown.md create mode 100644 docs/intent/functions/parseFrontmatter.md create mode 100644 docs/intent/functions/readProjectConfig.md create mode 100644 docs/intent/functions/resolveFrequency.md create mode 100644 docs/intent/functions/runInit.md create mode 100644 docs/intent/functions/runSetup.md create mode 100644 docs/intent/functions/scanForIntents.md create mode 100644 docs/intent/functions/submitFeedback.md create mode 100644 docs/intent/functions/submitMetaFeedback.md create mode 100644 docs/intent/functions/toMarkdown.md create mode 100644 docs/intent/functions/validateMetaPayload.md create mode 100644 docs/intent/functions/validatePayload.md create mode 100644 docs/intent/functions/writeProjectConfig.md create mode 100644 docs/intent/index.md create mode 100644 docs/intent/interfaces/FeedbackPayload.md create mode 100644 docs/intent/interfaces/IntentConfig.md create mode 100644 docs/intent/interfaces/IntentPackage.md create mode 100644 docs/intent/interfaces/IntentProjectConfig.md create mode 100644 docs/intent/interfaces/MetaFeedbackPayload.md create mode 100644 docs/intent/interfaces/ScanResult.md create mode 100644 docs/intent/interfaces/SkillEntry.md create mode 100644 docs/intent/interfaces/SkillStaleness.md create mode 100644 docs/intent/interfaces/StalenessReport.md create mode 100644 docs/intent/type-aliases/AgentName.md create mode 100644 docs/intent/type-aliases/MetaSkillName.md diff --git a/docs/intent/functions/checkStaleness.md b/docs/intent/functions/checkStaleness.md new file mode 100644 index 0000000..ac01981 --- /dev/null +++ b/docs/intent/functions/checkStaleness.md @@ -0,0 +1,26 @@ +--- +id: checkStaleness +title: checkStaleness +--- + +# Function: checkStaleness() + +```ts +function checkStaleness(packageDir, packageName?): Promise; +``` + +Defined in: [staleness.ts:75](https://github.com/TanStack/intent/blob/main/packages/intent/src/staleness.ts#L75) + +## Parameters + +### packageDir + +`string` + +### packageName? + +`string` + +## Returns + +`Promise`\<[`StalenessReport`](../interfaces/StalenessReport.md)\> diff --git a/docs/intent/functions/containsSecrets.md b/docs/intent/functions/containsSecrets.md new file mode 100644 index 0000000..93acabe --- /dev/null +++ b/docs/intent/functions/containsSecrets.md @@ -0,0 +1,22 @@ +--- +id: containsSecrets +title: containsSecrets +--- + +# Function: containsSecrets() + +```ts +function containsSecrets(text): boolean; +``` + +Defined in: [feedback.ts:26](https://github.com/TanStack/intent/blob/main/packages/intent/src/feedback.ts#L26) + +## Parameters + +### text + +`string` + +## Returns + +`boolean` diff --git a/docs/intent/functions/detectAgentConfigs.md b/docs/intent/functions/detectAgentConfigs.md new file mode 100644 index 0000000..43c70d0 --- /dev/null +++ b/docs/intent/functions/detectAgentConfigs.md @@ -0,0 +1,22 @@ +--- +id: detectAgentConfigs +title: detectAgentConfigs +--- + +# Function: detectAgentConfigs() + +```ts +function detectAgentConfigs(root): string[]; +``` + +Defined in: [init.ts:35](https://github.com/TanStack/intent/blob/main/packages/intent/src/init.ts#L35) + +## Parameters + +### root + +`string` + +## Returns + +`string`[] diff --git a/docs/intent/functions/findSkillFiles.md b/docs/intent/functions/findSkillFiles.md new file mode 100644 index 0000000..d06d76b --- /dev/null +++ b/docs/intent/functions/findSkillFiles.md @@ -0,0 +1,24 @@ +--- +id: findSkillFiles +title: findSkillFiles +--- + +# Function: findSkillFiles() + +```ts +function findSkillFiles(dir): string[]; +``` + +Defined in: [utils.ts:8](https://github.com/TanStack/intent/blob/main/packages/intent/src/utils.ts#L8) + +Recursively find all SKILL.md files under a directory. + +## Parameters + +### dir + +`string` + +## Returns + +`string`[] diff --git a/docs/intent/functions/hasGhCli.md b/docs/intent/functions/hasGhCli.md new file mode 100644 index 0000000..6265d15 --- /dev/null +++ b/docs/intent/functions/hasGhCli.md @@ -0,0 +1,16 @@ +--- +id: hasGhCli +title: hasGhCli +--- + +# Function: hasGhCli() + +```ts +function hasGhCli(): boolean; +``` + +Defined in: [feedback.ts:34](https://github.com/TanStack/intent/blob/main/packages/intent/src/feedback.ts#L34) + +## Returns + +`boolean` diff --git a/docs/intent/functions/hasIntentBlock.md b/docs/intent/functions/hasIntentBlock.md new file mode 100644 index 0000000..8ca116f --- /dev/null +++ b/docs/intent/functions/hasIntentBlock.md @@ -0,0 +1,22 @@ +--- +id: hasIntentBlock +title: hasIntentBlock +--- + +# Function: hasIntentBlock() + +```ts +function hasIntentBlock(filePath): boolean; +``` + +Defined in: [init.ts:45](https://github.com/TanStack/intent/blob/main/packages/intent/src/init.ts#L45) + +## Parameters + +### filePath + +`string` + +## Returns + +`boolean` diff --git a/docs/intent/functions/injectIntentBlock.md b/docs/intent/functions/injectIntentBlock.md new file mode 100644 index 0000000..d2cd7f9 --- /dev/null +++ b/docs/intent/functions/injectIntentBlock.md @@ -0,0 +1,22 @@ +--- +id: injectIntentBlock +title: injectIntentBlock +--- + +# Function: injectIntentBlock() + +```ts +function injectIntentBlock(filePath): boolean; +``` + +Defined in: [init.ts:54](https://github.com/TanStack/intent/blob/main/packages/intent/src/init.ts#L54) + +## Parameters + +### filePath + +`string` + +## Returns + +`boolean` diff --git a/docs/intent/functions/metaToMarkdown.md b/docs/intent/functions/metaToMarkdown.md new file mode 100644 index 0000000..6b5cc92 --- /dev/null +++ b/docs/intent/functions/metaToMarkdown.md @@ -0,0 +1,22 @@ +--- +id: metaToMarkdown +title: metaToMarkdown +--- + +# Function: metaToMarkdown() + +```ts +function metaToMarkdown(payload): string; +``` + +Defined in: [feedback.ts:229](https://github.com/TanStack/intent/blob/main/packages/intent/src/feedback.ts#L229) + +## Parameters + +### payload + +[`MetaFeedbackPayload`](../interfaces/MetaFeedbackPayload.md) + +## Returns + +`string` diff --git a/docs/intent/functions/parseFrontmatter.md b/docs/intent/functions/parseFrontmatter.md new file mode 100644 index 0000000..45dd5aa --- /dev/null +++ b/docs/intent/functions/parseFrontmatter.md @@ -0,0 +1,24 @@ +--- +id: parseFrontmatter +title: parseFrontmatter +--- + +# Function: parseFrontmatter() + +```ts +function parseFrontmatter(filePath): Record; +``` + +Defined in: [utils.ts:25](https://github.com/TanStack/intent/blob/main/packages/intent/src/utils.ts#L25) + +Parse YAML frontmatter from a file. Returns null if no frontmatter or on error. + +## Parameters + +### filePath + +`string` + +## Returns + +`Record`\<`string`, `unknown`\> diff --git a/docs/intent/functions/readProjectConfig.md b/docs/intent/functions/readProjectConfig.md new file mode 100644 index 0000000..3765b78 --- /dev/null +++ b/docs/intent/functions/readProjectConfig.md @@ -0,0 +1,22 @@ +--- +id: readProjectConfig +title: readProjectConfig +--- + +# Function: readProjectConfig() + +```ts +function readProjectConfig(root): IntentProjectConfig; +``` + +Defined in: [init.ts:83](https://github.com/TanStack/intent/blob/main/packages/intent/src/init.ts#L83) + +## Parameters + +### root + +`string` + +## Returns + +[`IntentProjectConfig`](../interfaces/IntentProjectConfig.md) diff --git a/docs/intent/functions/resolveFrequency.md b/docs/intent/functions/resolveFrequency.md new file mode 100644 index 0000000..2f7f9f5 --- /dev/null +++ b/docs/intent/functions/resolveFrequency.md @@ -0,0 +1,22 @@ +--- +id: resolveFrequency +title: resolveFrequency +--- + +# Function: resolveFrequency() + +```ts +function resolveFrequency(root): string; +``` + +Defined in: [feedback.ts:54](https://github.com/TanStack/intent/blob/main/packages/intent/src/feedback.ts#L54) + +## Parameters + +### root + +`string` + +## Returns + +`string` diff --git a/docs/intent/functions/runInit.md b/docs/intent/functions/runInit.md new file mode 100644 index 0000000..08e3e06 --- /dev/null +++ b/docs/intent/functions/runInit.md @@ -0,0 +1,22 @@ +--- +id: runInit +title: runInit +--- + +# Function: runInit() + +```ts +function runInit(root): InitResult; +``` + +Defined in: [init.ts:103](https://github.com/TanStack/intent/blob/main/packages/intent/src/init.ts#L103) + +## Parameters + +### root + +`string` + +## Returns + +`InitResult` diff --git a/docs/intent/functions/runSetup.md b/docs/intent/functions/runSetup.md new file mode 100644 index 0000000..c014555 --- /dev/null +++ b/docs/intent/functions/runSetup.md @@ -0,0 +1,33 @@ +--- +id: runSetup +title: runSetup +--- + +# Function: runSetup() + +```ts +function runSetup( + root, + metaDir, + args): SetupResult; +``` + +Defined in: [setup.ts:141](https://github.com/TanStack/intent/blob/main/packages/intent/src/setup.ts#L141) + +## Parameters + +### root + +`string` + +### metaDir + +`string` + +### args + +`string`[] + +## Returns + +`SetupResult` diff --git a/docs/intent/functions/scanForIntents.md b/docs/intent/functions/scanForIntents.md new file mode 100644 index 0000000..81d0b7f --- /dev/null +++ b/docs/intent/functions/scanForIntents.md @@ -0,0 +1,22 @@ +--- +id: scanForIntents +title: scanForIntents +--- + +# Function: scanForIntents() + +```ts +function scanForIntents(root?): Promise; +``` + +Defined in: [scanner.ts:142](https://github.com/TanStack/intent/blob/main/packages/intent/src/scanner.ts#L142) + +## Parameters + +### root? + +`string` + +## Returns + +`Promise`\<[`ScanResult`](../interfaces/ScanResult.md)\> diff --git a/docs/intent/functions/submitFeedback.md b/docs/intent/functions/submitFeedback.md new file mode 100644 index 0000000..46e2dbb --- /dev/null +++ b/docs/intent/functions/submitFeedback.md @@ -0,0 +1,39 @@ +--- +id: submitFeedback +title: submitFeedback +--- + +# Function: submitFeedback() + +```ts +function submitFeedback( + payload, + repo, + opts): SubmitResult; +``` + +Defined in: [feedback.ts:301](https://github.com/TanStack/intent/blob/main/packages/intent/src/feedback.ts#L301) + +## Parameters + +### payload + +[`FeedbackPayload`](../interfaces/FeedbackPayload.md) + +### repo + +`string` + +### opts + +#### ghAvailable + +`boolean` + +#### outputPath? + +`string` + +## Returns + +`SubmitResult` diff --git a/docs/intent/functions/submitMetaFeedback.md b/docs/intent/functions/submitMetaFeedback.md new file mode 100644 index 0000000..b037589 --- /dev/null +++ b/docs/intent/functions/submitMetaFeedback.md @@ -0,0 +1,32 @@ +--- +id: submitMetaFeedback +title: submitMetaFeedback +--- + +# Function: submitMetaFeedback() + +```ts +function submitMetaFeedback(payload, opts): SubmitResult; +``` + +Defined in: [feedback.ts:336](https://github.com/TanStack/intent/blob/main/packages/intent/src/feedback.ts#L336) + +## Parameters + +### payload + +[`MetaFeedbackPayload`](../interfaces/MetaFeedbackPayload.md) + +### opts + +#### ghAvailable + +`boolean` + +#### outputPath? + +`string` + +## Returns + +`SubmitResult` diff --git a/docs/intent/functions/toMarkdown.md b/docs/intent/functions/toMarkdown.md new file mode 100644 index 0000000..b1ae26c --- /dev/null +++ b/docs/intent/functions/toMarkdown.md @@ -0,0 +1,22 @@ +--- +id: toMarkdown +title: toMarkdown +--- + +# Function: toMarkdown() + +```ts +function toMarkdown(payload): string; +``` + +Defined in: [feedback.ts:261](https://github.com/TanStack/intent/blob/main/packages/intent/src/feedback.ts#L261) + +## Parameters + +### payload + +[`FeedbackPayload`](../interfaces/FeedbackPayload.md) + +## Returns + +`string` diff --git a/docs/intent/functions/validateMetaPayload.md b/docs/intent/functions/validateMetaPayload.md new file mode 100644 index 0000000..284fafc --- /dev/null +++ b/docs/intent/functions/validateMetaPayload.md @@ -0,0 +1,34 @@ +--- +id: validateMetaPayload +title: validateMetaPayload +--- + +# Function: validateMetaPayload() + +```ts +function validateMetaPayload(payload): object; +``` + +Defined in: [feedback.ts:170](https://github.com/TanStack/intent/blob/main/packages/intent/src/feedback.ts#L170) + +## Parameters + +### payload + +`unknown` + +## Returns + +`object` + +### errors + +```ts +errors: string[]; +``` + +### valid + +```ts +valid: boolean; +``` diff --git a/docs/intent/functions/validatePayload.md b/docs/intent/functions/validatePayload.md new file mode 100644 index 0000000..07ad18d --- /dev/null +++ b/docs/intent/functions/validatePayload.md @@ -0,0 +1,34 @@ +--- +id: validatePayload +title: validatePayload +--- + +# Function: validatePayload() + +```ts +function validatePayload(payload): object; +``` + +Defined in: [feedback.ts:97](https://github.com/TanStack/intent/blob/main/packages/intent/src/feedback.ts#L97) + +## Parameters + +### payload + +`unknown` + +## Returns + +`object` + +### errors + +```ts +errors: string[]; +``` + +### valid + +```ts +valid: boolean; +``` diff --git a/docs/intent/functions/writeProjectConfig.md b/docs/intent/functions/writeProjectConfig.md new file mode 100644 index 0000000..85e0071 --- /dev/null +++ b/docs/intent/functions/writeProjectConfig.md @@ -0,0 +1,22 @@ +--- +id: writeProjectConfig +title: writeProjectConfig +--- + +# Function: writeProjectConfig() + +```ts +function writeProjectConfig(root): string; +``` + +Defined in: [init.ts:75](https://github.com/TanStack/intent/blob/main/packages/intent/src/init.ts#L75) + +## Parameters + +### root + +`string` + +## Returns + +`string` diff --git a/docs/intent/index.md b/docs/intent/index.md new file mode 100644 index 0000000..fd85092 --- /dev/null +++ b/docs/intent/index.md @@ -0,0 +1,46 @@ +--- +id: "@tanstack/intent" +title: "@tanstack/intent" +--- + +# @tanstack/intent + +## Interfaces + +- [FeedbackPayload](interfaces/FeedbackPayload.md) +- [IntentConfig](interfaces/IntentConfig.md) +- [IntentPackage](interfaces/IntentPackage.md) +- [IntentProjectConfig](interfaces/IntentProjectConfig.md) +- [MetaFeedbackPayload](interfaces/MetaFeedbackPayload.md) +- [ScanResult](interfaces/ScanResult.md) +- [SkillEntry](interfaces/SkillEntry.md) +- [SkillStaleness](interfaces/SkillStaleness.md) +- [StalenessReport](interfaces/StalenessReport.md) + +## Type Aliases + +- [AgentName](type-aliases/AgentName.md) +- [MetaSkillName](type-aliases/MetaSkillName.md) + +## Functions + +- [checkStaleness](functions/checkStaleness.md) +- [containsSecrets](functions/containsSecrets.md) +- [detectAgentConfigs](functions/detectAgentConfigs.md) +- [findSkillFiles](functions/findSkillFiles.md) +- [hasGhCli](functions/hasGhCli.md) +- [hasIntentBlock](functions/hasIntentBlock.md) +- [injectIntentBlock](functions/injectIntentBlock.md) +- [metaToMarkdown](functions/metaToMarkdown.md) +- [parseFrontmatter](functions/parseFrontmatter.md) +- [readProjectConfig](functions/readProjectConfig.md) +- [resolveFrequency](functions/resolveFrequency.md) +- [runInit](functions/runInit.md) +- [runSetup](functions/runSetup.md) +- [scanForIntents](functions/scanForIntents.md) +- [submitFeedback](functions/submitFeedback.md) +- [submitMetaFeedback](functions/submitMetaFeedback.md) +- [toMarkdown](functions/toMarkdown.md) +- [validateMetaPayload](functions/validateMetaPayload.md) +- [validatePayload](functions/validatePayload.md) +- [writeProjectConfig](functions/writeProjectConfig.md) diff --git a/docs/intent/interfaces/FeedbackPayload.md b/docs/intent/interfaces/FeedbackPayload.md new file mode 100644 index 0000000..9fa2a67 --- /dev/null +++ b/docs/intent/interfaces/FeedbackPayload.md @@ -0,0 +1,108 @@ +--- +id: FeedbackPayload +title: FeedbackPayload +--- + +# Interface: FeedbackPayload + +Defined in: [types.ts:59](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L59) + +## Properties + +### missing + +```ts +missing: string; +``` + +Defined in: [types.ts:66](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L66) + +*** + +### package + +```ts +package: string; +``` + +Defined in: [types.ts:61](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L61) + +*** + +### selfCorrections + +```ts +selfCorrections: string; +``` + +Defined in: [types.ts:67](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L67) + +*** + +### skill + +```ts +skill: string; +``` + +Defined in: [types.ts:60](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L60) + +*** + +### skillVersion + +```ts +skillVersion: string; +``` + +Defined in: [types.ts:62](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L62) + +*** + +### task + +```ts +task: string; +``` + +Defined in: [types.ts:63](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L63) + +*** + +### userComments? + +```ts +optional userComments: string; +``` + +Defined in: [types.ts:69](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L69) + +*** + +### userRating + +```ts +userRating: "good" | "mixed" | "bad"; +``` + +Defined in: [types.ts:68](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L68) + +*** + +### whatFailed + +```ts +whatFailed: string; +``` + +Defined in: [types.ts:65](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L65) + +*** + +### whatWorked + +```ts +whatWorked: string; +``` + +Defined in: [types.ts:64](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L64) diff --git a/docs/intent/interfaces/IntentConfig.md b/docs/intent/interfaces/IntentConfig.md new file mode 100644 index 0000000..d185635 --- /dev/null +++ b/docs/intent/interfaces/IntentConfig.md @@ -0,0 +1,48 @@ +--- +id: IntentConfig +title: IntentConfig +--- + +# Interface: IntentConfig + +Defined in: [types.ts:5](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L5) + +## Properties + +### docs + +```ts +docs: string; +``` + +Defined in: [types.ts:8](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L8) + +*** + +### repo + +```ts +repo: string; +``` + +Defined in: [types.ts:7](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L7) + +*** + +### requires? + +```ts +optional requires: string[]; +``` + +Defined in: [types.ts:9](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L9) + +*** + +### version + +```ts +version: number; +``` + +Defined in: [types.ts:6](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L6) diff --git a/docs/intent/interfaces/IntentPackage.md b/docs/intent/interfaces/IntentPackage.md new file mode 100644 index 0000000..68aa89f --- /dev/null +++ b/docs/intent/interfaces/IntentPackage.md @@ -0,0 +1,48 @@ +--- +id: IntentPackage +title: IntentPackage +--- + +# Interface: IntentPackage + +Defined in: [types.ts:22](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L22) + +## Properties + +### intent + +```ts +intent: IntentConfig; +``` + +Defined in: [types.ts:25](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L25) + +*** + +### name + +```ts +name: string; +``` + +Defined in: [types.ts:23](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L23) + +*** + +### skills + +```ts +skills: SkillEntry[]; +``` + +Defined in: [types.ts:26](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L26) + +*** + +### version + +```ts +version: string; +``` + +Defined in: [types.ts:24](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L24) diff --git a/docs/intent/interfaces/IntentProjectConfig.md b/docs/intent/interfaces/IntentProjectConfig.md new file mode 100644 index 0000000..d7fb0c2 --- /dev/null +++ b/docs/intent/interfaces/IntentProjectConfig.md @@ -0,0 +1,24 @@ +--- +id: IntentProjectConfig +title: IntentProjectConfig +--- + +# Interface: IntentProjectConfig + +Defined in: [types.ts:107](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L107) + +## Properties + +### feedback + +```ts +feedback: object; +``` + +Defined in: [types.ts:108](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L108) + +#### frequency + +```ts +frequency: string; +``` diff --git a/docs/intent/interfaces/MetaFeedbackPayload.md b/docs/intent/interfaces/MetaFeedbackPayload.md new file mode 100644 index 0000000..2c606b3 --- /dev/null +++ b/docs/intent/interfaces/MetaFeedbackPayload.md @@ -0,0 +1,108 @@ +--- +id: MetaFeedbackPayload +title: MetaFeedbackPayload +--- + +# Interface: MetaFeedbackPayload + +Defined in: [types.ts:90](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L90) + +## Properties + +### agentUsed + +```ts +agentUsed: AgentName; +``` + +Defined in: [types.ts:93](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L93) + +*** + +### artifactQuality + +```ts +artifactQuality: "good" | "mixed" | "bad"; +``` + +Defined in: [types.ts:94](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L94) + +*** + +### failureModeQuality? + +```ts +optional failureModeQuality: "good" | "mixed" | "bad" | "not-applicable"; +``` + +Defined in: [types.ts:96](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L96) + +*** + +### interviewQuality? + +```ts +optional interviewQuality: "skipped" | "good" | "mixed" | "bad"; +``` + +Defined in: [types.ts:95](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L95) + +*** + +### library + +```ts +library: string; +``` + +Defined in: [types.ts:92](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L92) + +*** + +### metaSkill + +```ts +metaSkill: MetaSkillName; +``` + +Defined in: [types.ts:91](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L91) + +*** + +### suggestions + +```ts +suggestions: string; +``` + +Defined in: [types.ts:99](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L99) + +*** + +### userRating + +```ts +userRating: "good" | "mixed" | "bad"; +``` + +Defined in: [types.ts:100](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L100) + +*** + +### whatFailed + +```ts +whatFailed: string; +``` + +Defined in: [types.ts:98](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L98) + +*** + +### whatWorked + +```ts +whatWorked: string; +``` + +Defined in: [types.ts:97](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L97) diff --git a/docs/intent/interfaces/ScanResult.md b/docs/intent/interfaces/ScanResult.md new file mode 100644 index 0000000..7db217f --- /dev/null +++ b/docs/intent/interfaces/ScanResult.md @@ -0,0 +1,38 @@ +--- +id: ScanResult +title: ScanResult +--- + +# Interface: ScanResult + +Defined in: [types.ts:16](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L16) + +## Properties + +### packageManager + +```ts +packageManager: "unknown" | "npm" | "pnpm" | "yarn" | "bun"; +``` + +Defined in: [types.ts:17](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L17) + +*** + +### packages + +```ts +packages: IntentPackage[]; +``` + +Defined in: [types.ts:18](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L18) + +*** + +### warnings + +```ts +warnings: string[]; +``` + +Defined in: [types.ts:19](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L19) diff --git a/docs/intent/interfaces/SkillEntry.md b/docs/intent/interfaces/SkillEntry.md new file mode 100644 index 0000000..d801101 --- /dev/null +++ b/docs/intent/interfaces/SkillEntry.md @@ -0,0 +1,58 @@ +--- +id: SkillEntry +title: SkillEntry +--- + +# Interface: SkillEntry + +Defined in: [types.ts:29](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L29) + +## Properties + +### description + +```ts +description: string; +``` + +Defined in: [types.ts:32](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L32) + +*** + +### framework? + +```ts +optional framework: string; +``` + +Defined in: [types.ts:34](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L34) + +*** + +### name + +```ts +name: string; +``` + +Defined in: [types.ts:30](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L30) + +*** + +### path + +```ts +path: string; +``` + +Defined in: [types.ts:31](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L31) + +*** + +### type? + +```ts +optional type: string; +``` + +Defined in: [types.ts:33](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L33) diff --git a/docs/intent/interfaces/SkillStaleness.md b/docs/intent/interfaces/SkillStaleness.md new file mode 100644 index 0000000..29324cc --- /dev/null +++ b/docs/intent/interfaces/SkillStaleness.md @@ -0,0 +1,38 @@ +--- +id: SkillStaleness +title: SkillStaleness +--- + +# Interface: SkillStaleness + +Defined in: [types.ts:49](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L49) + +## Properties + +### name + +```ts +name: string; +``` + +Defined in: [types.ts:50](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L50) + +*** + +### needsReview + +```ts +needsReview: boolean; +``` + +Defined in: [types.ts:52](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L52) + +*** + +### reasons + +```ts +reasons: string[]; +``` + +Defined in: [types.ts:51](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L51) diff --git a/docs/intent/interfaces/StalenessReport.md b/docs/intent/interfaces/StalenessReport.md new file mode 100644 index 0000000..40057b4 --- /dev/null +++ b/docs/intent/interfaces/StalenessReport.md @@ -0,0 +1,58 @@ +--- +id: StalenessReport +title: StalenessReport +--- + +# Interface: StalenessReport + +Defined in: [types.ts:41](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L41) + +## Properties + +### currentVersion + +```ts +currentVersion: string; +``` + +Defined in: [types.ts:43](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L43) + +*** + +### library + +```ts +library: string; +``` + +Defined in: [types.ts:42](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L42) + +*** + +### skills + +```ts +skills: SkillStaleness[]; +``` + +Defined in: [types.ts:46](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L46) + +*** + +### skillVersion + +```ts +skillVersion: string; +``` + +Defined in: [types.ts:44](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L44) + +*** + +### versionDrift + +```ts +versionDrift: "major" | "minor" | "patch"; +``` + +Defined in: [types.ts:45](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L45) diff --git a/docs/intent/type-aliases/AgentName.md b/docs/intent/type-aliases/AgentName.md new file mode 100644 index 0000000..472b98c --- /dev/null +++ b/docs/intent/type-aliases/AgentName.md @@ -0,0 +1,12 @@ +--- +id: AgentName +title: AgentName +--- + +# Type Alias: AgentName + +```ts +type AgentName = "oz" | "claude-code" | "cursor" | "copilot" | "codex" | "other"; +``` + +Defined in: [types.ts:82](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L82) diff --git a/docs/intent/type-aliases/MetaSkillName.md b/docs/intent/type-aliases/MetaSkillName.md new file mode 100644 index 0000000..570dd16 --- /dev/null +++ b/docs/intent/type-aliases/MetaSkillName.md @@ -0,0 +1,16 @@ +--- +id: MetaSkillName +title: MetaSkillName +--- + +# Type Alias: MetaSkillName + +```ts +type MetaSkillName = + | "domain-discovery" + | "tree-generator" + | "generate-skill" + | "skill-staleness-check"; +``` + +Defined in: [types.ts:76](https://github.com/TanStack/intent/blob/main/packages/intent/src/types.ts#L76) diff --git a/packages/intent/src/scanner.ts b/packages/intent/src/scanner.ts index b4cca6f..3b41a17 100644 --- a/packages/intent/src/scanner.ts +++ b/packages/intent/src/scanner.ts @@ -156,7 +156,10 @@ export async function scanForIntents(root?: string): Promise { let topEntries: Dirent[] try { - topEntries = readdirSync(nodeModulesDir, { withFileTypes: true, encoding: 'utf8' }) + topEntries = readdirSync(nodeModulesDir, { + withFileTypes: true, + encoding: 'utf8', + }) } catch { return { packageManager, packages, warnings } } @@ -169,7 +172,10 @@ export async function scanForIntents(root?: string): Promise { // Scoped package — check children let scopedEntries: Dirent[] try { - scopedEntries = readdirSync(dirPath, { withFileTypes: true, encoding: 'utf8' }) + scopedEntries = readdirSync(dirPath, { + withFileTypes: true, + encoding: 'utf8', + }) } catch { continue }