claude-skills-cli 0.0.1 → 0.0.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/dist/commands/validate.js +5 -1
- package/dist/commands/validate.js.map +1 -1
- package/dist/core/templates.js +95 -20
- package/dist/core/templates.js.map +1 -1
- package/dist/core/validator.js +89 -1
- package/dist/core/validator.js.map +1 -1
- package/dist/utils/output.js +50 -0
- package/dist/utils/output.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { basename } from 'path';
|
|
2
2
|
import { SkillValidator } from '../core/validator.js';
|
|
3
|
-
import {
|
|
3
|
+
import { display_validation_stats, error, info, success, } from '../utils/output.js';
|
|
4
4
|
export function validate_command(options) {
|
|
5
5
|
const { skill_path, strict } = options;
|
|
6
6
|
const skill_name = basename(skill_path);
|
|
@@ -8,6 +8,10 @@ export function validate_command(options) {
|
|
|
8
8
|
console.log('='.repeat(60));
|
|
9
9
|
const validator = new SkillValidator(skill_path);
|
|
10
10
|
const result = validator.validate_all();
|
|
11
|
+
// Display progressive disclosure stats
|
|
12
|
+
if (result.stats) {
|
|
13
|
+
display_validation_stats(result.stats);
|
|
14
|
+
}
|
|
11
15
|
// Print errors
|
|
12
16
|
if (result.errors.length > 0) {
|
|
13
17
|
console.log('\n❌ Errors:');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EACL,wBAAwB,EACxB,KAAK,EACL,IAAI,EACJ,OAAO,GACR,MAAM,oBAAoB,CAAC;AAE5B,MAAM,UAAU,gBAAgB,CAAC,OAAwB;IACvD,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IAExC,IAAI,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;IAExC,uCAAuC;IACvC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,eAAe;IACf,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC7B,CAAC;SAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,gCAAgC,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,KAAK,CAAC,gCAAgC,MAAM,CAAC,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC;IACzE,CAAC;IAED,oBAAoB;IACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
package/dist/core/templates.js
CHANGED
|
@@ -5,58 +5,133 @@ description: ${description}
|
|
|
5
5
|
|
|
6
6
|
# ${title}
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
<!-- ============================================ -->
|
|
9
|
+
<!-- PROGRESSIVE DISCLOSURE GUIDELINES -->
|
|
10
|
+
<!-- ============================================ -->
|
|
11
|
+
<!-- This file uses the 3-level loading system: -->
|
|
12
|
+
<!-- -->
|
|
13
|
+
<!-- Level 1: Metadata (above) - Always loaded -->
|
|
14
|
+
<!-- ~100 tokens: name + description -->
|
|
15
|
+
<!-- -->
|
|
16
|
+
<!-- Level 2: This body - Loaded when triggered -->
|
|
17
|
+
<!-- Recommended: <1000 words (<1300 tokens) -->
|
|
18
|
+
<!-- Maximum: <5000 words (<6500 tokens) -->
|
|
19
|
+
<!-- What to include: Quick start, core patterns-->
|
|
20
|
+
<!-- What to exclude: Full docs, many examples -->
|
|
21
|
+
<!-- -->
|
|
22
|
+
<!-- Level 3: references/ - Loaded as needed -->
|
|
23
|
+
<!-- Unlimited: Detailed guides, API docs, -->
|
|
24
|
+
<!-- extensive examples, schemas -->
|
|
25
|
+
<!-- ============================================ -->
|
|
11
26
|
|
|
12
27
|
## Quick Start
|
|
28
|
+
<!-- Keep this section under 300 words -->
|
|
29
|
+
<!-- Show the most common workflow only -->
|
|
30
|
+
|
|
31
|
+
[Provide a minimal working example showing the most common use case]
|
|
13
32
|
|
|
14
33
|
\`\`\`typescript
|
|
15
|
-
//
|
|
34
|
+
// Single example demonstrating core functionality
|
|
35
|
+
// Keep this concise - detailed examples go in references/examples.md
|
|
16
36
|
\`\`\`
|
|
17
37
|
|
|
18
38
|
## Core Patterns
|
|
39
|
+
<!-- Limit to 2-3 most frequently used patterns -->
|
|
40
|
+
<!-- Each pattern should be <200 words -->
|
|
19
41
|
|
|
20
|
-
### Pattern 1: [
|
|
42
|
+
### Pattern 1: [Most Common Pattern]
|
|
21
43
|
|
|
22
|
-
[
|
|
44
|
+
[Brief description with minimal example]
|
|
23
45
|
|
|
24
46
|
\`\`\`typescript
|
|
25
|
-
//
|
|
47
|
+
// Essential code only
|
|
26
48
|
\`\`\`
|
|
27
49
|
|
|
28
|
-
### Pattern 2: [
|
|
50
|
+
### Pattern 2: [Second Most Common Pattern]
|
|
29
51
|
|
|
30
|
-
[
|
|
52
|
+
[Brief description with minimal example]
|
|
31
53
|
|
|
32
54
|
\`\`\`typescript
|
|
33
|
-
//
|
|
55
|
+
// Essential code only
|
|
34
56
|
\`\`\`
|
|
35
57
|
|
|
58
|
+
## Common Mistakes to Avoid
|
|
59
|
+
|
|
60
|
+
❌ Don't [common mistake]
|
|
61
|
+
✅ Do [correct approach]
|
|
62
|
+
|
|
36
63
|
## Advanced Usage
|
|
64
|
+
<!-- Link to Level 3 resources instead of including detailed content here -->
|
|
37
65
|
|
|
38
|
-
For
|
|
39
|
-
- [references/detailed-guide.md](references/detailed-guide.md)
|
|
40
|
-
- [references/examples.md](references/examples.md)
|
|
66
|
+
For comprehensive documentation, see:
|
|
67
|
+
- [references/detailed-guide.md](references/detailed-guide.md) - Complete API reference
|
|
68
|
+
- [references/examples.md](references/examples.md) - Extensive code examples
|
|
41
69
|
|
|
42
70
|
## Scripts
|
|
43
71
|
|
|
44
|
-
|
|
72
|
+
Scripts provide deterministic operations without consuming context:
|
|
73
|
+
- \`scripts/example.py\`: [What this script does]
|
|
45
74
|
|
|
46
75
|
## Notes
|
|
47
76
|
|
|
48
|
-
-
|
|
49
|
-
-
|
|
77
|
+
- Keep this file under 1000 words for optimal token efficiency
|
|
78
|
+
- Move detailed content to references/ for Level 3 loading
|
|
79
|
+
- Link to reference files instead of duplicating content
|
|
50
80
|
`;
|
|
51
81
|
export const REFERENCE_TEMPLATE = (title) => `# ${title} Reference
|
|
52
82
|
|
|
53
|
-
|
|
83
|
+
<!-- This is a Level 3 resource file -->
|
|
84
|
+
<!-- It's loaded on-demand when Claude needs detailed information -->
|
|
85
|
+
<!-- No size limits - include comprehensive documentation here -->
|
|
86
|
+
|
|
87
|
+
## Overview
|
|
88
|
+
|
|
89
|
+
[Detailed explanation of this topic]
|
|
90
|
+
|
|
91
|
+
## Complete Examples
|
|
92
|
+
|
|
93
|
+
### Example 1: [Scenario]
|
|
94
|
+
|
|
95
|
+
[Comprehensive example with full context]
|
|
96
|
+
|
|
97
|
+
\`\`\`typescript
|
|
98
|
+
// Detailed code with comments
|
|
99
|
+
// Include edge cases and variations
|
|
100
|
+
\`\`\`
|
|
101
|
+
|
|
102
|
+
### Example 2: [Scenario]
|
|
103
|
+
|
|
104
|
+
[Another detailed example]
|
|
105
|
+
|
|
106
|
+
\`\`\`typescript
|
|
107
|
+
// More extensive code
|
|
108
|
+
\`\`\`
|
|
109
|
+
|
|
110
|
+
## Advanced Topics
|
|
111
|
+
|
|
112
|
+
[Deep dive into complex aspects]
|
|
113
|
+
|
|
114
|
+
## API Reference
|
|
115
|
+
|
|
116
|
+
[Complete API documentation if applicable]
|
|
117
|
+
|
|
118
|
+
## Best Practices
|
|
119
|
+
|
|
120
|
+
- [Detailed best practice 1]
|
|
121
|
+
- [Detailed best practice 2]
|
|
122
|
+
- [Detailed best practice 3]
|
|
123
|
+
|
|
124
|
+
## Troubleshooting
|
|
125
|
+
|
|
126
|
+
### Issue 1
|
|
54
127
|
|
|
55
|
-
|
|
128
|
+
**Problem:** [Description]
|
|
129
|
+
**Solution:** [Detailed solution]
|
|
56
130
|
|
|
57
|
-
|
|
131
|
+
### Issue 2
|
|
58
132
|
|
|
59
|
-
|
|
133
|
+
**Problem:** [Description]
|
|
134
|
+
**Solution:** [Detailed solution]
|
|
60
135
|
`;
|
|
61
136
|
export const SCRIPT_TEMPLATE = (filename) => `#!/usr/bin/env python3
|
|
62
137
|
"""
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAY,EACZ,WAAmB,EACnB,KAAa,EACb,EAAE,CAAC;QACG,IAAI;eACG,WAAW;;;IAGtB,KAAK
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAY,EACZ,WAAmB,EACnB,KAAa,EACb,EAAE,CAAC;QACG,IAAI;eACG,WAAW;;;IAGtB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0ER,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsD9D,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC;;;;;aAKxC,QAAQ;;;;;;;;CAQpB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,KAAa,EACb,WAAmB,EACnB,EAAE,CAAC,KAAK,KAAK;;EAEb,WAAW;;;;;;;;;;;;CAYZ,CAAC"}
|
package/dist/core/validator.js
CHANGED
|
@@ -1,9 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { existsSync, readdirSync, readFileSync, statSync } from 'fs';
|
|
2
2
|
import { join } from 'path';
|
|
3
3
|
export class SkillValidator {
|
|
4
4
|
skill_path;
|
|
5
5
|
errors = [];
|
|
6
6
|
warnings = [];
|
|
7
|
+
stats = {
|
|
8
|
+
word_count: 0,
|
|
9
|
+
estimated_tokens: 0,
|
|
10
|
+
code_blocks: 0,
|
|
11
|
+
sections: 0,
|
|
12
|
+
long_paragraphs: 0,
|
|
13
|
+
};
|
|
14
|
+
// Progressive disclosure limits (from Anthropic guidelines)
|
|
15
|
+
MAX_WORDS = 5000; // Hard limit
|
|
16
|
+
RECOMMENDED_WORDS = 1000; // Sweet spot
|
|
17
|
+
IDEAL_WORDS = 500; // Minimal but effective
|
|
7
18
|
constructor(skill_path) {
|
|
8
19
|
this.skill_path = skill_path;
|
|
9
20
|
}
|
|
@@ -13,6 +24,77 @@ export class SkillValidator {
|
|
|
13
24
|
warning(msg) {
|
|
14
25
|
this.warnings.push(`⚠️ ${msg}`);
|
|
15
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Extract body content from SKILL.md (excluding YAML frontmatter)
|
|
29
|
+
*/
|
|
30
|
+
extract_body(content) {
|
|
31
|
+
const parts = content.split('---\n');
|
|
32
|
+
return parts.length >= 3 ? parts.slice(2).join('---\n').trim() : content;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Count words in text
|
|
36
|
+
*/
|
|
37
|
+
count_words(text) {
|
|
38
|
+
return text
|
|
39
|
+
.trim()
|
|
40
|
+
.split(/\s+/)
|
|
41
|
+
.filter((w) => w.length > 0).length;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Estimate tokens (rough approximation: 1 word ≈ 1.3 tokens for English)
|
|
45
|
+
*/
|
|
46
|
+
estimate_tokens(word_count) {
|
|
47
|
+
return Math.round(word_count * 1.3);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Analyze content structure and patterns
|
|
51
|
+
*/
|
|
52
|
+
analyze_content(body) {
|
|
53
|
+
// Count code blocks
|
|
54
|
+
const code_block_matches = body.match(/```[\s\S]*?```/g);
|
|
55
|
+
this.stats.code_blocks = code_block_matches ? code_block_matches.length : 0;
|
|
56
|
+
// Count markdown sections (headings)
|
|
57
|
+
const heading_matches = body.match(/^#{1,6}\s/gm);
|
|
58
|
+
this.stats.sections = heading_matches ? heading_matches.length : 0;
|
|
59
|
+
// Count long paragraphs (>100 words)
|
|
60
|
+
const paragraphs = body.split(/\n\n+/);
|
|
61
|
+
this.stats.long_paragraphs = paragraphs.filter((p) => {
|
|
62
|
+
const words = this.count_words(p);
|
|
63
|
+
return words > 100;
|
|
64
|
+
}).length;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Validate progressive disclosure (word count and token budget)
|
|
68
|
+
*/
|
|
69
|
+
validate_progressive_disclosure(body) {
|
|
70
|
+
const word_count = this.count_words(body);
|
|
71
|
+
const estimated_tokens = this.estimate_tokens(word_count);
|
|
72
|
+
this.stats.word_count = word_count;
|
|
73
|
+
this.stats.estimated_tokens = estimated_tokens;
|
|
74
|
+
// Hard limit check (error)
|
|
75
|
+
if (word_count > this.MAX_WORDS) {
|
|
76
|
+
this.error(`SKILL.md body has ${word_count} words (MAX: ${this.MAX_WORDS} per Anthropic guidelines)\n` +
|
|
77
|
+
` → Move detailed content to references/ directory for Level 3 loading`);
|
|
78
|
+
}
|
|
79
|
+
// Recommended limit check (warning)
|
|
80
|
+
else if (word_count > this.RECOMMENDED_WORDS) {
|
|
81
|
+
this.warning(`SKILL.md body has ${word_count} words (recommended: <${this.RECOMMENDED_WORDS})\n` +
|
|
82
|
+
` → Consider moving examples/docs to references/ for better token efficiency`);
|
|
83
|
+
}
|
|
84
|
+
// Content analysis warnings
|
|
85
|
+
if (this.stats.code_blocks > 10) {
|
|
86
|
+
this.warning(`SKILL.md contains ${this.stats.code_blocks} code examples\n` +
|
|
87
|
+
` → Consider moving detailed examples to references/examples.md`);
|
|
88
|
+
}
|
|
89
|
+
if (this.stats.long_paragraphs > 3) {
|
|
90
|
+
this.warning(`SKILL.md contains ${this.stats.long_paragraphs} lengthy paragraphs\n` +
|
|
91
|
+
` → Consider moving detailed explanations to references/`);
|
|
92
|
+
}
|
|
93
|
+
if (this.stats.sections > 20) {
|
|
94
|
+
this.warning(`SKILL.md contains ${this.stats.sections} sections\n` +
|
|
95
|
+
` → Consider splitting into focused reference files`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
16
98
|
validate_directory() {
|
|
17
99
|
if (!existsSync(this.skill_path)) {
|
|
18
100
|
this.error(`Skill directory does not exist: ${this.skill_path}`);
|
|
@@ -89,6 +171,10 @@ export class SkillValidator {
|
|
|
89
171
|
this.warning("Consider adding 'when to use' guidance to description");
|
|
90
172
|
}
|
|
91
173
|
}
|
|
174
|
+
// Validate progressive disclosure (word count, token budget)
|
|
175
|
+
this.validate_progressive_disclosure(body);
|
|
176
|
+
// Analyze content structure
|
|
177
|
+
this.analyze_content(body);
|
|
92
178
|
// Check body content
|
|
93
179
|
if (body.trim().length < 100) {
|
|
94
180
|
this.warning('SKILL.md body is very short');
|
|
@@ -163,6 +249,7 @@ export class SkillValidator {
|
|
|
163
249
|
errors: this.errors,
|
|
164
250
|
warnings: this.warnings,
|
|
165
251
|
is_valid: false,
|
|
252
|
+
stats: this.stats,
|
|
166
253
|
};
|
|
167
254
|
}
|
|
168
255
|
this.validate_skill_md();
|
|
@@ -173,6 +260,7 @@ export class SkillValidator {
|
|
|
173
260
|
errors: this.errors,
|
|
174
261
|
warnings: this.warnings,
|
|
175
262
|
is_valid: this.errors.length === 0,
|
|
263
|
+
stats: this.stats,
|
|
176
264
|
};
|
|
177
265
|
}
|
|
178
266
|
get_errors() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/core/validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/core/validator.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/output.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
1
2
|
export const success = (msg) => console.log(`✅ ${msg}`);
|
|
2
3
|
export const error = (msg) => console.log(`❌ ${msg}`);
|
|
3
4
|
export const warning = (msg) => console.log(`⚠️ ${msg}`);
|
|
@@ -6,4 +7,53 @@ export const step = (msg) => console.log(` ${msg}`);
|
|
|
6
7
|
export const package_ = (msg) => console.log(`📦 ${msg}`);
|
|
7
8
|
export const upload = (msg) => console.log(`📤 ${msg}`);
|
|
8
9
|
export const search = (msg) => console.log(`🔍 ${msg}`);
|
|
10
|
+
/**
|
|
11
|
+
* Display progressive disclosure statistics with color-coded feedback
|
|
12
|
+
*/
|
|
13
|
+
export function display_validation_stats(stats) {
|
|
14
|
+
console.log(chalk.cyan('\n📊 Progressive Disclosure Stats:'));
|
|
15
|
+
// Word count with recommendations
|
|
16
|
+
const word_status = stats.word_count < 500
|
|
17
|
+
? chalk.green('✅ Excellent')
|
|
18
|
+
: stats.word_count < 1000
|
|
19
|
+
? chalk.green('✅ Good')
|
|
20
|
+
: stats.word_count < 5000
|
|
21
|
+
? chalk.yellow('⚠️ Consider splitting')
|
|
22
|
+
: chalk.red('❌ Too large');
|
|
23
|
+
console.log(` Words: ${stats.word_count} (recommended: <1000, max: <5000) ${word_status}`);
|
|
24
|
+
// Token estimation
|
|
25
|
+
const token_budget = 6500; // Level 2 budget (~5000 words * 1.3)
|
|
26
|
+
const token_status = stats.estimated_tokens < token_budget
|
|
27
|
+
? chalk.green('within budget')
|
|
28
|
+
: chalk.red('exceeds budget');
|
|
29
|
+
console.log(` Est. tokens: ~${stats.estimated_tokens} (Level 2 budget: <${token_budget}) ${token_status}`);
|
|
30
|
+
// Code blocks
|
|
31
|
+
const code_status = stats.code_blocks > 10
|
|
32
|
+
? chalk.yellow(' (consider references/examples.md)')
|
|
33
|
+
: '';
|
|
34
|
+
console.log(` Code blocks: ${stats.code_blocks}${code_status}`);
|
|
35
|
+
// Sections
|
|
36
|
+
const section_status = stats.sections > 20 ? chalk.yellow(' (consider splitting)') : '';
|
|
37
|
+
console.log(` Sections: ${stats.sections}${section_status}`);
|
|
38
|
+
// Long paragraphs
|
|
39
|
+
if (stats.long_paragraphs > 0) {
|
|
40
|
+
const para_status = stats.long_paragraphs > 3
|
|
41
|
+
? chalk.yellow(' (consider moving to references/)')
|
|
42
|
+
: '';
|
|
43
|
+
console.log(` Long paragraphs: ${stats.long_paragraphs}${para_status}`);
|
|
44
|
+
}
|
|
45
|
+
// Overall assessment
|
|
46
|
+
if (stats.word_count < 500) {
|
|
47
|
+
console.log(chalk.green('\n ✅ Excellent progressive disclosure!'));
|
|
48
|
+
}
|
|
49
|
+
else if (stats.word_count < 1000) {
|
|
50
|
+
console.log(chalk.green('\n ✅ Good progressive disclosure'));
|
|
51
|
+
}
|
|
52
|
+
else if (stats.word_count < 5000) {
|
|
53
|
+
console.log(chalk.yellow('\n ⚠️ Consider splitting into references/'));
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.log(chalk.red('\n ❌ Violates progressive disclosure (move content to references/)'));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
9
59
|
//# sourceMappingURL=output.js.map
|
package/dist/utils/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAsB;IAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;IAE9D,kCAAkC;IAClC,MAAM,WAAW,GACf,KAAK,CAAC,UAAU,GAAG,GAAG;QACpB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;QAC5B,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI;YACvB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;YACvB,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI;gBACvB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC;gBACxC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAEnC,OAAO,CAAC,GAAG,CACT,YAAY,KAAK,CAAC,UAAU,qCAAqC,WAAW,EAAE,CAC/E,CAAC;IAEF,mBAAmB;IACnB,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,qCAAqC;IAChE,MAAM,YAAY,GAChB,KAAK,CAAC,gBAAgB,GAAG,YAAY;QACnC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;QAC9B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAElC,OAAO,CAAC,GAAG,CACT,mBAAmB,KAAK,CAAC,gBAAgB,sBAAsB,YAAY,KAAK,YAAY,EAAE,CAC/F,CAAC;IAEF,cAAc;IACd,MAAM,WAAW,GACf,KAAK,CAAC,WAAW,GAAG,EAAE;QACpB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC;QACpD,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC,CAAC;IAEjE,WAAW;IACX,MAAM,cAAc,GAClB,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,QAAQ,GAAG,cAAc,EAAE,CAAC,CAAC;IAE9D,kBAAkB;IAClB,IAAI,KAAK,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,WAAW,GACf,KAAK,CAAC,eAAe,GAAG,CAAC;YACvB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,mCAAmC,CAAC;YACnD,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,eAAe,GAAG,WAAW,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,qBAAqB;IACrB,IAAI,KAAK,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;IACtE,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAChE,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAC,CAAC;IAC3E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,qEAAqE,CACtE,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|