create-claude-context 1.0.0 → 1.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/LICENSE +21 -21
- package/README.md +146 -146
- package/bin/create-claude-context.js +61 -61
- package/lib/detector.js +373 -373
- package/lib/index.js +170 -170
- package/lib/installer.js +371 -362
- package/lib/placeholder.js +208 -208
- package/lib/prompts.js +287 -287
- package/lib/spinner.js +60 -60
- package/lib/validate.js +147 -147
- package/package.json +59 -59
- package/templates/CLAUDE.md.template +235 -235
- package/templates/base/README.md +257 -257
- package/templates/base/RPI_WORKFLOW_PLAN.md +320 -320
- package/templates/base/agents/api-developer.md +76 -76
- package/templates/base/agents/context-engineer.md +525 -525
- package/templates/base/agents/core-architect.md +76 -76
- package/templates/base/agents/database-ops.md +76 -76
- package/templates/base/agents/deployment-ops.md +76 -76
- package/templates/base/agents/integration-hub.md +76 -76
- package/templates/base/analytics/README.md +114 -114
- package/templates/base/automation/config.json +58 -0
- package/templates/base/automation/generators/code-mapper.js +308 -0
- package/templates/base/automation/generators/index-builder.js +321 -0
- package/templates/base/automation/hooks/post-commit.sh +83 -0
- package/templates/base/automation/hooks/pre-commit.sh +103 -0
- package/templates/base/ci-templates/README.md +108 -108
- package/templates/base/ci-templates/github-actions/context-check.yml +144 -144
- package/templates/base/ci-templates/github-actions/validate-docs.yml +105 -105
- package/templates/base/commands/analytics.md +238 -238
- package/templates/base/commands/auto-sync.md +172 -0
- package/templates/base/commands/collab.md +194 -194
- package/templates/base/commands/help.md +450 -450
- package/templates/base/commands/rpi-implement.md +115 -115
- package/templates/base/commands/rpi-plan.md +93 -93
- package/templates/base/commands/rpi-research.md +88 -88
- package/templates/base/commands/session-resume.md +144 -0
- package/templates/base/commands/session-save.md +112 -0
- package/templates/base/commands/validate-all.md +77 -77
- package/templates/base/commands/verify-docs-current.md +86 -86
- package/templates/base/config/base.json +57 -57
- package/templates/base/config/environments/development.json +13 -13
- package/templates/base/config/environments/production.json +17 -17
- package/templates/base/config/environments/staging.json +13 -13
- package/templates/base/config/local.json.example +21 -21
- package/templates/base/context/.meta/generated-at.json +18 -0
- package/templates/base/context/ARCHITECTURE_SNAPSHOT.md +156 -156
- package/templates/base/context/CODE_TO_WORKFLOW_MAP.md +94 -94
- package/templates/base/context/FILE_OWNERSHIP.md +57 -0
- package/templates/base/context/INTEGRATION_POINTS.md +92 -0
- package/templates/base/context/KNOWN_GOTCHAS.md +195 -195
- package/templates/base/context/TESTING_MAP.md +95 -0
- package/templates/base/context/WORKFLOW_INDEX.md +129 -129
- package/templates/base/context/workflows/WORKFLOW_TEMPLATE.md +294 -294
- package/templates/base/indexes/agents/CAPABILITY_MATRIX.md +255 -255
- package/templates/base/indexes/agents/CATEGORY_INDEX.md +44 -44
- package/templates/base/indexes/code/CATEGORY_INDEX.md +38 -38
- package/templates/base/indexes/routing/CATEGORY_INDEX.md +39 -39
- package/templates/base/indexes/search/CATEGORY_INDEX.md +39 -39
- package/templates/base/indexes/workflows/CATEGORY_INDEX.md +38 -38
- package/templates/base/knowledge/README.md +98 -98
- package/templates/base/knowledge/sessions/README.md +88 -88
- package/templates/base/knowledge/sessions/TEMPLATE.md +150 -150
- package/templates/base/knowledge/shared/decisions/0001-adopt-context-engineering.md +144 -144
- package/templates/base/knowledge/shared/decisions/README.md +49 -49
- package/templates/base/knowledge/shared/decisions/TEMPLATE.md +123 -123
- package/templates/base/knowledge/shared/patterns/README.md +62 -62
- package/templates/base/knowledge/shared/patterns/TEMPLATE.md +120 -120
- package/templates/base/plans/PLAN_TEMPLATE.md +250 -250
- package/templates/base/research/RESEARCH_TEMPLATE.md +153 -153
- package/templates/base/schemas/agent.schema.json +141 -141
- package/templates/base/schemas/anchors.schema.json +54 -0
- package/templates/base/schemas/automation.schema.json +93 -0
- package/templates/base/schemas/command.schema.json +134 -134
- package/templates/base/schemas/hashes.schema.json +40 -0
- package/templates/base/schemas/manifest.schema.json +117 -117
- package/templates/base/schemas/plan.schema.json +136 -136
- package/templates/base/schemas/research.schema.json +115 -115
- package/templates/base/schemas/roles.schema.json +34 -0
- package/templates/base/schemas/session.schema.json +77 -0
- package/templates/base/schemas/settings.schema.json +244 -244
- package/templates/base/schemas/staleness.schema.json +53 -0
- package/templates/base/schemas/team-config.schema.json +42 -0
- package/templates/base/schemas/workflow.schema.json +126 -126
- package/templates/base/session/checkpoints/.gitkeep +2 -0
- package/templates/base/session/current/state.json +20 -0
- package/templates/base/session/history/.gitkeep +2 -0
- package/templates/base/settings.json +79 -57
- package/templates/base/standards/COMPATIBILITY.md +219 -219
- package/templates/base/standards/EXTENSION_GUIDELINES.md +280 -280
- package/templates/base/standards/QUALITY_CHECKLIST.md +211 -211
- package/templates/base/standards/README.md +66 -66
- package/templates/base/sync/anchors.json +6 -0
- package/templates/base/sync/hashes.json +6 -0
- package/templates/base/sync/staleness.json +10 -0
- package/templates/base/team/README.md +168 -168
- package/templates/base/team/config.json +79 -79
- package/templates/base/team/roles.json +145 -145
- package/templates/base/tools/bin/claude-context.js +151 -151
- package/templates/base/tools/lib/anchor-resolver.js +276 -0
- package/templates/base/tools/lib/config-loader.js +363 -363
- package/templates/base/tools/lib/detector.js +350 -350
- package/templates/base/tools/lib/diagnose.js +206 -206
- package/templates/base/tools/lib/drift-detector.js +373 -0
- package/templates/base/tools/lib/errors.js +199 -199
- package/templates/base/tools/lib/index.js +36 -24
- package/templates/base/tools/lib/init.js +192 -192
- package/templates/base/tools/lib/logger.js +230 -230
- package/templates/base/tools/lib/placeholder.js +201 -201
- package/templates/base/tools/lib/session-manager.js +354 -0
- package/templates/base/tools/lib/validate.js +521 -521
- package/templates/base/tools/package.json +49 -49
|
@@ -1,108 +1,108 @@
|
|
|
1
|
-
# CI/CD Templates
|
|
2
|
-
|
|
3
|
-
Pre-built CI/CD workflows for Claude Context Engineering validation.
|
|
4
|
-
|
|
5
|
-
## Available Templates
|
|
6
|
-
|
|
7
|
-
### GitHub Actions
|
|
8
|
-
|
|
9
|
-
| Template | Purpose | Trigger |
|
|
10
|
-
|----------|---------|---------|
|
|
11
|
-
| `validate-docs.yml` | Validate documentation on PRs | Pull requests |
|
|
12
|
-
| `context-check.yml` | Monitor context budget health | Push, weekly, manual |
|
|
13
|
-
|
|
14
|
-
## Installation
|
|
15
|
-
|
|
16
|
-
### GitHub Actions
|
|
17
|
-
|
|
18
|
-
Copy templates to your `.github/workflows/` directory:
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
# From project root
|
|
22
|
-
mkdir -p .github/workflows
|
|
23
|
-
cp .claude/ci-templates/github-actions/*.yml .github/workflows/
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
### Prerequisites
|
|
27
|
-
|
|
28
|
-
1. Node.js 18+ available in CI environment
|
|
29
|
-
2. `.claude/tools/` dependencies installed:
|
|
30
|
-
```bash
|
|
31
|
-
cd .claude/tools && npm ci
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## Customization
|
|
35
|
-
|
|
36
|
-
### Adjust Validation Strictness
|
|
37
|
-
|
|
38
|
-
Edit the workflow files to change thresholds:
|
|
39
|
-
|
|
40
|
-
```yaml
|
|
41
|
-
# In validate-docs.yml
|
|
42
|
-
- name: Check Line Number Accuracy
|
|
43
|
-
run: |
|
|
44
|
-
npx claude-context validate --lines --threshold 70 # Stricter
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### Add Notifications
|
|
48
|
-
|
|
49
|
-
Add Slack/Discord notifications on failure:
|
|
50
|
-
|
|
51
|
-
```yaml
|
|
52
|
-
- name: Notify on Failure
|
|
53
|
-
if: failure()
|
|
54
|
-
uses: 8398a7/action-slack@v3
|
|
55
|
-
with:
|
|
56
|
-
status: ${{ job.status }}
|
|
57
|
-
webhook_url: ${{ secrets.SLACK_WEBHOOK }}
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Skip on Specific Files
|
|
61
|
-
|
|
62
|
-
Modify the `paths` filter:
|
|
63
|
-
|
|
64
|
-
```yaml
|
|
65
|
-
on:
|
|
66
|
-
pull_request:
|
|
67
|
-
paths:
|
|
68
|
-
- '.claude/**'
|
|
69
|
-
- 'src/**'
|
|
70
|
-
- '!src/**/*.test.js' # Exclude test files
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## Workflow Outputs
|
|
74
|
-
|
|
75
|
-
### validate-docs.yml
|
|
76
|
-
|
|
77
|
-
- **validation-report.md** - Detailed validation results
|
|
78
|
-
- PR comment on failure with specific issues
|
|
79
|
-
|
|
80
|
-
### context-check.yml
|
|
81
|
-
|
|
82
|
-
- **metrics.json** - Documentation metrics
|
|
83
|
-
- **diagnostics.txt** - System diagnostics
|
|
84
|
-
- **validation.txt** - Full validation output
|
|
85
|
-
- Auto-creates issue on weekly failure
|
|
86
|
-
|
|
87
|
-
## Troubleshooting
|
|
88
|
-
|
|
89
|
-
### "CLI tools not found"
|
|
90
|
-
|
|
91
|
-
Ensure tools are installed:
|
|
92
|
-
```bash
|
|
93
|
-
cd .claude/tools && npm ci
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### "Validation always fails on line numbers"
|
|
97
|
-
|
|
98
|
-
Line number drift is expected. Adjust threshold:
|
|
99
|
-
```yaml
|
|
100
|
-
--threshold 50 # More lenient
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### "Context budget exceeded"
|
|
104
|
-
|
|
105
|
-
Review documentation and consider:
|
|
106
|
-
1. Splitting large workflow files
|
|
107
|
-
2. Moving rarely-used content to separate files
|
|
108
|
-
3. Compacting verbose sections
|
|
1
|
+
# CI/CD Templates
|
|
2
|
+
|
|
3
|
+
Pre-built CI/CD workflows for Claude Context Engineering validation.
|
|
4
|
+
|
|
5
|
+
## Available Templates
|
|
6
|
+
|
|
7
|
+
### GitHub Actions
|
|
8
|
+
|
|
9
|
+
| Template | Purpose | Trigger |
|
|
10
|
+
|----------|---------|---------|
|
|
11
|
+
| `validate-docs.yml` | Validate documentation on PRs | Pull requests |
|
|
12
|
+
| `context-check.yml` | Monitor context budget health | Push, weekly, manual |
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
### GitHub Actions
|
|
17
|
+
|
|
18
|
+
Copy templates to your `.github/workflows/` directory:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# From project root
|
|
22
|
+
mkdir -p .github/workflows
|
|
23
|
+
cp .claude/ci-templates/github-actions/*.yml .github/workflows/
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Prerequisites
|
|
27
|
+
|
|
28
|
+
1. Node.js 18+ available in CI environment
|
|
29
|
+
2. `.claude/tools/` dependencies installed:
|
|
30
|
+
```bash
|
|
31
|
+
cd .claude/tools && npm ci
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Customization
|
|
35
|
+
|
|
36
|
+
### Adjust Validation Strictness
|
|
37
|
+
|
|
38
|
+
Edit the workflow files to change thresholds:
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
# In validate-docs.yml
|
|
42
|
+
- name: Check Line Number Accuracy
|
|
43
|
+
run: |
|
|
44
|
+
npx claude-context validate --lines --threshold 70 # Stricter
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Add Notifications
|
|
48
|
+
|
|
49
|
+
Add Slack/Discord notifications on failure:
|
|
50
|
+
|
|
51
|
+
```yaml
|
|
52
|
+
- name: Notify on Failure
|
|
53
|
+
if: failure()
|
|
54
|
+
uses: 8398a7/action-slack@v3
|
|
55
|
+
with:
|
|
56
|
+
status: ${{ job.status }}
|
|
57
|
+
webhook_url: ${{ secrets.SLACK_WEBHOOK }}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Skip on Specific Files
|
|
61
|
+
|
|
62
|
+
Modify the `paths` filter:
|
|
63
|
+
|
|
64
|
+
```yaml
|
|
65
|
+
on:
|
|
66
|
+
pull_request:
|
|
67
|
+
paths:
|
|
68
|
+
- '.claude/**'
|
|
69
|
+
- 'src/**'
|
|
70
|
+
- '!src/**/*.test.js' # Exclude test files
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Workflow Outputs
|
|
74
|
+
|
|
75
|
+
### validate-docs.yml
|
|
76
|
+
|
|
77
|
+
- **validation-report.md** - Detailed validation results
|
|
78
|
+
- PR comment on failure with specific issues
|
|
79
|
+
|
|
80
|
+
### context-check.yml
|
|
81
|
+
|
|
82
|
+
- **metrics.json** - Documentation metrics
|
|
83
|
+
- **diagnostics.txt** - System diagnostics
|
|
84
|
+
- **validation.txt** - Full validation output
|
|
85
|
+
- Auto-creates issue on weekly failure
|
|
86
|
+
|
|
87
|
+
## Troubleshooting
|
|
88
|
+
|
|
89
|
+
### "CLI tools not found"
|
|
90
|
+
|
|
91
|
+
Ensure tools are installed:
|
|
92
|
+
```bash
|
|
93
|
+
cd .claude/tools && npm ci
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### "Validation always fails on line numbers"
|
|
97
|
+
|
|
98
|
+
Line number drift is expected. Adjust threshold:
|
|
99
|
+
```yaml
|
|
100
|
+
--threshold 50 # More lenient
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### "Context budget exceeded"
|
|
104
|
+
|
|
105
|
+
Review documentation and consider:
|
|
106
|
+
1. Splitting large workflow files
|
|
107
|
+
2. Moving rarely-used content to separate files
|
|
108
|
+
3. Compacting verbose sections
|
|
@@ -1,144 +1,144 @@
|
|
|
1
|
-
# Claude Context Engineering - Context Budget Check
|
|
2
|
-
#
|
|
3
|
-
# This workflow monitors context budget and documentation health.
|
|
4
|
-
# Copy this file to .github/workflows/context-check.yml to enable.
|
|
5
|
-
#
|
|
6
|
-
# Runs on:
|
|
7
|
-
# - Push to main/master branches
|
|
8
|
-
# - Weekly schedule
|
|
9
|
-
# - Manual trigger
|
|
10
|
-
|
|
11
|
-
name: Context Budget Check
|
|
12
|
-
|
|
13
|
-
on:
|
|
14
|
-
push:
|
|
15
|
-
branches:
|
|
16
|
-
- main
|
|
17
|
-
- master
|
|
18
|
-
paths:
|
|
19
|
-
- '.claude/**'
|
|
20
|
-
schedule:
|
|
21
|
-
# Run weekly on Monday at 9am UTC
|
|
22
|
-
- cron: '0 9 * * 1'
|
|
23
|
-
workflow_dispatch:
|
|
24
|
-
|
|
25
|
-
jobs:
|
|
26
|
-
context-health:
|
|
27
|
-
name: Check Context Engineering Health
|
|
28
|
-
runs-on: ubuntu-latest
|
|
29
|
-
|
|
30
|
-
steps:
|
|
31
|
-
- name: Checkout repository
|
|
32
|
-
uses: actions/checkout@v4
|
|
33
|
-
|
|
34
|
-
- name: Setup Node.js
|
|
35
|
-
uses: actions/setup-node@v4
|
|
36
|
-
with:
|
|
37
|
-
node-version: '18'
|
|
38
|
-
cache: 'npm'
|
|
39
|
-
cache-dependency-path: '.claude/tools/package-lock.json'
|
|
40
|
-
|
|
41
|
-
- name: Install CLI tools
|
|
42
|
-
run: |
|
|
43
|
-
cd .claude/tools
|
|
44
|
-
npm ci
|
|
45
|
-
|
|
46
|
-
- name: Run Full Diagnostics
|
|
47
|
-
id: diagnose
|
|
48
|
-
run: |
|
|
49
|
-
echo "🔬 Running diagnostics..."
|
|
50
|
-
npx .claude/tools/bin/claude-context.js diagnose --verbose > diagnostics.txt 2>&1
|
|
51
|
-
cat diagnostics.txt
|
|
52
|
-
continue-on-error: true
|
|
53
|
-
|
|
54
|
-
- name: Calculate Documentation Metrics
|
|
55
|
-
run: |
|
|
56
|
-
echo "📊 Calculating metrics..."
|
|
57
|
-
|
|
58
|
-
# Count workflow files
|
|
59
|
-
WORKFLOW_COUNT=$(find .claude/context/workflows -name "*.md" 2>/dev/null | wc -l || echo "0")
|
|
60
|
-
echo "Workflow files: $WORKFLOW_COUNT"
|
|
61
|
-
|
|
62
|
-
# Count agent files
|
|
63
|
-
AGENT_COUNT=$(find .claude/agents -name "*.md" 2>/dev/null | wc -l || echo "0")
|
|
64
|
-
echo "Agent files: $AGENT_COUNT"
|
|
65
|
-
|
|
66
|
-
# Count command files
|
|
67
|
-
COMMAND_COUNT=$(find .claude/commands -name "*.md" 2>/dev/null | wc -l || echo "0")
|
|
68
|
-
echo "Command files: $COMMAND_COUNT"
|
|
69
|
-
|
|
70
|
-
# Estimate total documentation tokens (rough: 1 token ≈ 4 chars)
|
|
71
|
-
TOTAL_CHARS=$(find .claude -name "*.md" -exec cat {} \; 2>/dev/null | wc -c || echo "0")
|
|
72
|
-
ESTIMATED_TOKENS=$((TOTAL_CHARS / 4))
|
|
73
|
-
echo "Estimated documentation tokens: $ESTIMATED_TOKENS"
|
|
74
|
-
|
|
75
|
-
# Calculate as percentage of budget
|
|
76
|
-
MAX_TOKENS=200000
|
|
77
|
-
PERCENTAGE=$((ESTIMATED_TOKENS * 100 / MAX_TOKENS))
|
|
78
|
-
echo "Context budget usage: ${PERCENTAGE}%"
|
|
79
|
-
|
|
80
|
-
# Save metrics
|
|
81
|
-
cat > metrics.json << EOF
|
|
82
|
-
{
|
|
83
|
-
"workflow_count": $WORKFLOW_COUNT,
|
|
84
|
-
"agent_count": $AGENT_COUNT,
|
|
85
|
-
"command_count": $COMMAND_COUNT,
|
|
86
|
-
"estimated_tokens": $ESTIMATED_TOKENS,
|
|
87
|
-
"budget_percentage": $PERCENTAGE,
|
|
88
|
-
"timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
89
|
-
}
|
|
90
|
-
EOF
|
|
91
|
-
|
|
92
|
-
cat metrics.json
|
|
93
|
-
|
|
94
|
-
- name: Check Budget Threshold
|
|
95
|
-
run: |
|
|
96
|
-
PERCENTAGE=$(jq '.budget_percentage' metrics.json)
|
|
97
|
-
echo "Current usage: ${PERCENTAGE}%"
|
|
98
|
-
|
|
99
|
-
if [ "$PERCENTAGE" -gt 60 ]; then
|
|
100
|
-
echo "⚠️ WARNING: Documentation exceeds 60% of context budget!"
|
|
101
|
-
echo "Consider compacting or splitting documentation."
|
|
102
|
-
exit 1
|
|
103
|
-
elif [ "$PERCENTAGE" -gt 40 ]; then
|
|
104
|
-
echo "📊 Documentation is at ${PERCENTAGE}% - approaching target limit"
|
|
105
|
-
else
|
|
106
|
-
echo "✅ Documentation is within healthy range (${PERCENTAGE}%)"
|
|
107
|
-
fi
|
|
108
|
-
|
|
109
|
-
- name: Run Validation Suite
|
|
110
|
-
run: |
|
|
111
|
-
echo "🔍 Running validation..."
|
|
112
|
-
npx .claude/tools/bin/claude-context.js validate --all > validation.txt 2>&1 || true
|
|
113
|
-
cat validation.txt
|
|
114
|
-
|
|
115
|
-
- name: Upload Metrics
|
|
116
|
-
uses: actions/upload-artifact@v4
|
|
117
|
-
with:
|
|
118
|
-
name: context-metrics
|
|
119
|
-
path: |
|
|
120
|
-
metrics.json
|
|
121
|
-
diagnostics.txt
|
|
122
|
-
validation.txt
|
|
123
|
-
retention-days: 30
|
|
124
|
-
|
|
125
|
-
- name: Create Issue on Failure
|
|
126
|
-
if: failure() && github.event_name == 'schedule'
|
|
127
|
-
uses: actions/github-script@v7
|
|
128
|
-
with:
|
|
129
|
-
script: |
|
|
130
|
-
const fs = require('fs');
|
|
131
|
-
let metrics = {};
|
|
132
|
-
try {
|
|
133
|
-
metrics = JSON.parse(fs.readFileSync('metrics.json', 'utf8'));
|
|
134
|
-
} catch (e) {
|
|
135
|
-
metrics = { error: 'Could not read metrics' };
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
github.rest.issues.create({
|
|
139
|
-
owner: context.repo.owner,
|
|
140
|
-
repo: context.repo.repo,
|
|
141
|
-
title: '⚠️ Claude Context Engineering Health Check Failed',
|
|
142
|
-
body: `## Weekly Health Check Failed\n\n**Metrics:**\n\`\`\`json\n${JSON.stringify(metrics, null, 2)}\n\`\`\`\n\n**Action Required:**\n- Review documentation health\n- Run \`npx claude-context diagnose\` locally\n- Consider documentation compaction if over budget\n\n---\n*Generated by Claude Context Engineering CI*`,
|
|
143
|
-
labels: ['documentation', 'maintenance']
|
|
144
|
-
});
|
|
1
|
+
# Claude Context Engineering - Context Budget Check
|
|
2
|
+
#
|
|
3
|
+
# This workflow monitors context budget and documentation health.
|
|
4
|
+
# Copy this file to .github/workflows/context-check.yml to enable.
|
|
5
|
+
#
|
|
6
|
+
# Runs on:
|
|
7
|
+
# - Push to main/master branches
|
|
8
|
+
# - Weekly schedule
|
|
9
|
+
# - Manual trigger
|
|
10
|
+
|
|
11
|
+
name: Context Budget Check
|
|
12
|
+
|
|
13
|
+
on:
|
|
14
|
+
push:
|
|
15
|
+
branches:
|
|
16
|
+
- main
|
|
17
|
+
- master
|
|
18
|
+
paths:
|
|
19
|
+
- '.claude/**'
|
|
20
|
+
schedule:
|
|
21
|
+
# Run weekly on Monday at 9am UTC
|
|
22
|
+
- cron: '0 9 * * 1'
|
|
23
|
+
workflow_dispatch:
|
|
24
|
+
|
|
25
|
+
jobs:
|
|
26
|
+
context-health:
|
|
27
|
+
name: Check Context Engineering Health
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
|
|
30
|
+
steps:
|
|
31
|
+
- name: Checkout repository
|
|
32
|
+
uses: actions/checkout@v4
|
|
33
|
+
|
|
34
|
+
- name: Setup Node.js
|
|
35
|
+
uses: actions/setup-node@v4
|
|
36
|
+
with:
|
|
37
|
+
node-version: '18'
|
|
38
|
+
cache: 'npm'
|
|
39
|
+
cache-dependency-path: '.claude/tools/package-lock.json'
|
|
40
|
+
|
|
41
|
+
- name: Install CLI tools
|
|
42
|
+
run: |
|
|
43
|
+
cd .claude/tools
|
|
44
|
+
npm ci
|
|
45
|
+
|
|
46
|
+
- name: Run Full Diagnostics
|
|
47
|
+
id: diagnose
|
|
48
|
+
run: |
|
|
49
|
+
echo "🔬 Running diagnostics..."
|
|
50
|
+
npx .claude/tools/bin/claude-context.js diagnose --verbose > diagnostics.txt 2>&1
|
|
51
|
+
cat diagnostics.txt
|
|
52
|
+
continue-on-error: true
|
|
53
|
+
|
|
54
|
+
- name: Calculate Documentation Metrics
|
|
55
|
+
run: |
|
|
56
|
+
echo "📊 Calculating metrics..."
|
|
57
|
+
|
|
58
|
+
# Count workflow files
|
|
59
|
+
WORKFLOW_COUNT=$(find .claude/context/workflows -name "*.md" 2>/dev/null | wc -l || echo "0")
|
|
60
|
+
echo "Workflow files: $WORKFLOW_COUNT"
|
|
61
|
+
|
|
62
|
+
# Count agent files
|
|
63
|
+
AGENT_COUNT=$(find .claude/agents -name "*.md" 2>/dev/null | wc -l || echo "0")
|
|
64
|
+
echo "Agent files: $AGENT_COUNT"
|
|
65
|
+
|
|
66
|
+
# Count command files
|
|
67
|
+
COMMAND_COUNT=$(find .claude/commands -name "*.md" 2>/dev/null | wc -l || echo "0")
|
|
68
|
+
echo "Command files: $COMMAND_COUNT"
|
|
69
|
+
|
|
70
|
+
# Estimate total documentation tokens (rough: 1 token ≈ 4 chars)
|
|
71
|
+
TOTAL_CHARS=$(find .claude -name "*.md" -exec cat {} \; 2>/dev/null | wc -c || echo "0")
|
|
72
|
+
ESTIMATED_TOKENS=$((TOTAL_CHARS / 4))
|
|
73
|
+
echo "Estimated documentation tokens: $ESTIMATED_TOKENS"
|
|
74
|
+
|
|
75
|
+
# Calculate as percentage of budget
|
|
76
|
+
MAX_TOKENS=200000
|
|
77
|
+
PERCENTAGE=$((ESTIMATED_TOKENS * 100 / MAX_TOKENS))
|
|
78
|
+
echo "Context budget usage: ${PERCENTAGE}%"
|
|
79
|
+
|
|
80
|
+
# Save metrics
|
|
81
|
+
cat > metrics.json << EOF
|
|
82
|
+
{
|
|
83
|
+
"workflow_count": $WORKFLOW_COUNT,
|
|
84
|
+
"agent_count": $AGENT_COUNT,
|
|
85
|
+
"command_count": $COMMAND_COUNT,
|
|
86
|
+
"estimated_tokens": $ESTIMATED_TOKENS,
|
|
87
|
+
"budget_percentage": $PERCENTAGE,
|
|
88
|
+
"timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
89
|
+
}
|
|
90
|
+
EOF
|
|
91
|
+
|
|
92
|
+
cat metrics.json
|
|
93
|
+
|
|
94
|
+
- name: Check Budget Threshold
|
|
95
|
+
run: |
|
|
96
|
+
PERCENTAGE=$(jq '.budget_percentage' metrics.json)
|
|
97
|
+
echo "Current usage: ${PERCENTAGE}%"
|
|
98
|
+
|
|
99
|
+
if [ "$PERCENTAGE" -gt 60 ]; then
|
|
100
|
+
echo "⚠️ WARNING: Documentation exceeds 60% of context budget!"
|
|
101
|
+
echo "Consider compacting or splitting documentation."
|
|
102
|
+
exit 1
|
|
103
|
+
elif [ "$PERCENTAGE" -gt 40 ]; then
|
|
104
|
+
echo "📊 Documentation is at ${PERCENTAGE}% - approaching target limit"
|
|
105
|
+
else
|
|
106
|
+
echo "✅ Documentation is within healthy range (${PERCENTAGE}%)"
|
|
107
|
+
fi
|
|
108
|
+
|
|
109
|
+
- name: Run Validation Suite
|
|
110
|
+
run: |
|
|
111
|
+
echo "🔍 Running validation..."
|
|
112
|
+
npx .claude/tools/bin/claude-context.js validate --all > validation.txt 2>&1 || true
|
|
113
|
+
cat validation.txt
|
|
114
|
+
|
|
115
|
+
- name: Upload Metrics
|
|
116
|
+
uses: actions/upload-artifact@v4
|
|
117
|
+
with:
|
|
118
|
+
name: context-metrics
|
|
119
|
+
path: |
|
|
120
|
+
metrics.json
|
|
121
|
+
diagnostics.txt
|
|
122
|
+
validation.txt
|
|
123
|
+
retention-days: 30
|
|
124
|
+
|
|
125
|
+
- name: Create Issue on Failure
|
|
126
|
+
if: failure() && github.event_name == 'schedule'
|
|
127
|
+
uses: actions/github-script@v7
|
|
128
|
+
with:
|
|
129
|
+
script: |
|
|
130
|
+
const fs = require('fs');
|
|
131
|
+
let metrics = {};
|
|
132
|
+
try {
|
|
133
|
+
metrics = JSON.parse(fs.readFileSync('metrics.json', 'utf8'));
|
|
134
|
+
} catch (e) {
|
|
135
|
+
metrics = { error: 'Could not read metrics' };
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
github.rest.issues.create({
|
|
139
|
+
owner: context.repo.owner,
|
|
140
|
+
repo: context.repo.repo,
|
|
141
|
+
title: '⚠️ Claude Context Engineering Health Check Failed',
|
|
142
|
+
body: `## Weekly Health Check Failed\n\n**Metrics:**\n\`\`\`json\n${JSON.stringify(metrics, null, 2)}\n\`\`\`\n\n**Action Required:**\n- Review documentation health\n- Run \`npx claude-context diagnose\` locally\n- Consider documentation compaction if over budget\n\n---\n*Generated by Claude Context Engineering CI*`,
|
|
143
|
+
labels: ['documentation', 'maintenance']
|
|
144
|
+
});
|