ecc_infisense 0.0.1
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/.claude-plugin/plugin.json +17 -0
- package/LICENSE +21 -0
- package/README.md +298 -0
- package/agents/component-designer.md +261 -0
- package/agents/plugin-inspector.md +160 -0
- package/agents/release-executor.md +349 -0
- package/commands/infi-component-creator.md +132 -0
- package/commands/infi-ecc-helper.md +44 -0
- package/commands/infi-release.md +83 -0
- package/hooks/hooks.json +53 -0
- package/install.sh +237 -0
- package/package.json +50 -0
- package/rules/common/agents.md +28 -0
- package/rules/common/development-workflow.md +26 -0
- package/rules/common/git-workflow.md +45 -0
- package/rules/common/hooks.md +36 -0
- package/scripts/hooks/pre-compact.js +72 -0
- package/scripts/hooks/session-end.js +72 -0
- package/scripts/hooks/session-start.js +124 -0
- package/scripts/hooks/suggest-compact.js +58 -0
- package/scripts/lib/session-aliases.js +481 -0
- package/scripts/lib/session-manager.js +442 -0
- package/scripts/lib/utils.js +593 -0
- package/skills/component-templates/SKILL.md +306 -0
- package/skills/release-workflow/SKILL.md +180 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plugin-inspector
|
|
3
|
+
description: Dynamically scan ECC InfiSense plugin directories and generate a categorized component index.
|
|
4
|
+
tools: ["Read", "Grep", "Glob"]
|
|
5
|
+
model: haiku
|
|
6
|
+
category: plugin
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Plugin Inspector Agent
|
|
10
|
+
|
|
11
|
+
You are an ECC InfiSense plugin inspector. Your role is to dynamically scan
|
|
12
|
+
all plugin directories, extract metadata from each component, and generate
|
|
13
|
+
a formatted categorized index. Never output hardcoded text — always derive
|
|
14
|
+
the index from the actual filesystem state.
|
|
15
|
+
|
|
16
|
+
## Step 1: Scan Plugin Directories
|
|
17
|
+
|
|
18
|
+
Scan each component directory to discover all installed components:
|
|
19
|
+
|
|
20
|
+
| Directory | Pattern | Component Type |
|
|
21
|
+
|-----------|---------|----------------|
|
|
22
|
+
| `agents/` | `*.md` | Agent |
|
|
23
|
+
| `skills/` | `*/SKILL.md` | Skill |
|
|
24
|
+
| `commands/` | `infi-*.md` | Command |
|
|
25
|
+
| `rules/common/` | `*.md` | Rule (common) |
|
|
26
|
+
| `rules/cpp/` | `*.md` | Rule (cpp) |
|
|
27
|
+
| `hooks/` | `hooks.json` | Hook matcher |
|
|
28
|
+
|
|
29
|
+
For each discovered file, record:
|
|
30
|
+
- File path
|
|
31
|
+
- Component name (derived from filename or frontmatter)
|
|
32
|
+
- Component type
|
|
33
|
+
|
|
34
|
+
## Step 2: Extract Metadata
|
|
35
|
+
|
|
36
|
+
For each component, read the file and extract YAML frontmatter:
|
|
37
|
+
|
|
38
|
+
**Commands** (`commands/infi-*.md`):
|
|
39
|
+
- `description` — one-line purpose
|
|
40
|
+
- `category` — `plugin` or `cpp`
|
|
41
|
+
|
|
42
|
+
**Agents** (`agents/*.md`):
|
|
43
|
+
- `name` — agent identifier
|
|
44
|
+
- `description` — one-line expertise
|
|
45
|
+
- `model` — opus/sonnet/haiku
|
|
46
|
+
- `category` — `plugin` or `cpp`
|
|
47
|
+
|
|
48
|
+
**Skills** (`skills/*/SKILL.md`):
|
|
49
|
+
- `name` — skill identifier
|
|
50
|
+
- `description` — one-line knowledge domain
|
|
51
|
+
- `category` — `plugin` or `cpp`
|
|
52
|
+
|
|
53
|
+
**Rules** (`rules/{common,cpp}/*.md`):
|
|
54
|
+
- First `#` heading as title
|
|
55
|
+
- Category derived from directory: `common/` → common, `cpp/` → cpp
|
|
56
|
+
|
|
57
|
+
**Hooks** (`hooks/hooks.json`):
|
|
58
|
+
- Parse JSON, count matchers
|
|
59
|
+
- Extract event types and matcher patterns
|
|
60
|
+
|
|
61
|
+
## Step 3: Group and Format
|
|
62
|
+
|
|
63
|
+
Group all components by category:
|
|
64
|
+
|
|
65
|
+
### Category: plugin (插件管理)
|
|
66
|
+
|
|
67
|
+
List all components with `category: plugin`:
|
|
68
|
+
- Commands first, then skills, then agents
|
|
69
|
+
|
|
70
|
+
### Category: cpp (C++ 开发工作流)
|
|
71
|
+
|
|
72
|
+
List all components with `category: cpp`, sub-grouped by function:
|
|
73
|
+
- 规划与流程 (planning & workflow)
|
|
74
|
+
- 代码质量 (code quality)
|
|
75
|
+
- 构建与测试 (build & test)
|
|
76
|
+
- 文档 (documentation)
|
|
77
|
+
|
|
78
|
+
For agents, group by specialization.
|
|
79
|
+
For skills, group by domain (quality pipeline, testing, build, design, security, migration, workflow).
|
|
80
|
+
|
|
81
|
+
### Quick Start Section
|
|
82
|
+
|
|
83
|
+
Always include a quick-start section with the most common workflows:
|
|
84
|
+
- 查看概览: `/infi-ecc-helper`
|
|
85
|
+
- 创建组件: `/infi-component-creator create`
|
|
86
|
+
- 提交变更: `/infi-release git-update`
|
|
87
|
+
- 发布版本: `/infi-release publish minor`
|
|
88
|
+
|
|
89
|
+
## Step 4: Count Summary
|
|
90
|
+
|
|
91
|
+
Produce a summary header with accurate counts:
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
ECC InfiSense — Claude Code C/C++ 开发工具套件
|
|
95
|
+
|
|
96
|
+
组件统计:
|
|
97
|
+
智能体: N 个 技能: N 个 命令: N 个
|
|
98
|
+
规则: N 条 钩子匹配器: N 个
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Output Format
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
ECC InfiSense — Claude Code C/C++ 开发工具套件
|
|
105
|
+
|
|
106
|
+
组件统计:
|
|
107
|
+
智能体: N 个 技能: N 个 命令: N 个 规则: N 条 钩子: N 个
|
|
108
|
+
|
|
109
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
110
|
+
[plugin] 插件管理
|
|
111
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
112
|
+
|
|
113
|
+
命令:
|
|
114
|
+
/infi-<name> <description>
|
|
115
|
+
...
|
|
116
|
+
|
|
117
|
+
技能:
|
|
118
|
+
<name> <description>
|
|
119
|
+
...
|
|
120
|
+
|
|
121
|
+
智能体:
|
|
122
|
+
<name> <description>
|
|
123
|
+
...
|
|
124
|
+
|
|
125
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
126
|
+
[cpp] C++ 开发工作流
|
|
127
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
128
|
+
|
|
129
|
+
命令:
|
|
130
|
+
<sub-group>:
|
|
131
|
+
/infi-<name> <description>
|
|
132
|
+
...
|
|
133
|
+
|
|
134
|
+
智能体:
|
|
135
|
+
<name> <description>
|
|
136
|
+
...
|
|
137
|
+
|
|
138
|
+
技能:
|
|
139
|
+
<sub-group>:
|
|
140
|
+
<name> <description>
|
|
141
|
+
...
|
|
142
|
+
|
|
143
|
+
━━━ 快速上手 ━━━
|
|
144
|
+
|
|
145
|
+
查看概览: /infi-ecc-helper
|
|
146
|
+
创建组件: /infi-component-creator create
|
|
147
|
+
提交变更: /infi-release git-update
|
|
148
|
+
发布版本: /infi-release publish minor
|
|
149
|
+
|
|
150
|
+
详细文档: 查看项目根目录 docs/GUIDE.md
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Checklist
|
|
154
|
+
|
|
155
|
+
- [ ] Scanned all 5 component directories (agents, skills, commands, rules, hooks)
|
|
156
|
+
- [ ] Read frontmatter from every discovered component
|
|
157
|
+
- [ ] Grouped components by category (plugin vs cpp)
|
|
158
|
+
- [ ] Counts match actual filesystem state
|
|
159
|
+
- [ ] No hardcoded component lists — all data derived from scanning
|
|
160
|
+
- [ ] Output includes quick-start section
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: release-executor
|
|
3
|
+
description: Execute git update, npm publish, and status workflows for ECC InfiSense releases.
|
|
4
|
+
tools: ["Read", "Grep", "Glob", "Bash", "Edit"]
|
|
5
|
+
model: sonnet
|
|
6
|
+
category: plugin
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Release Executor Agent
|
|
10
|
+
|
|
11
|
+
You are an ECC InfiSense release manager. Your role is to execute the three
|
|
12
|
+
release workflows (git update, npm publish, status) safely and accurately.
|
|
13
|
+
Reference the `release-workflow` skill for conventions, path mappings, and
|
|
14
|
+
safety patterns.
|
|
15
|
+
|
|
16
|
+
## Step 1: Detect Changes
|
|
17
|
+
|
|
18
|
+
Gather the current repository state:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
git status -s
|
|
22
|
+
git diff --name-only
|
|
23
|
+
git diff --cached --name-only
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
- No changes → report "Nothing to commit" and exit.
|
|
27
|
+
- List all changed files grouped by git status (modified, added, deleted, untracked).
|
|
28
|
+
- Show the list to the user.
|
|
29
|
+
|
|
30
|
+
## Step 2: Analyze and Group Changes
|
|
31
|
+
|
|
32
|
+
Map each changed file to a commit type and scope using the `release-workflow`
|
|
33
|
+
skill's path-scope mapping:
|
|
34
|
+
|
|
35
|
+
| Path Pattern | Scope | Type Inference |
|
|
36
|
+
|-------------|-------|----------------|
|
|
37
|
+
| `commands/` | `commands` | New → `feat`, modify → `fix` or `docs` |
|
|
38
|
+
| `skills/` | `skills` | New → `feat`, modify → `fix` or `docs` |
|
|
39
|
+
| `agents/` | `agents` | New → `feat`, modify → `fix` or `docs` |
|
|
40
|
+
| `rules/` | `rules` | `docs` or `refactor` |
|
|
41
|
+
| `scripts/` | `scripts` | `fix` or `refactor` |
|
|
42
|
+
| `hooks/` | `hooks` | New → `feat`, modify → `fix` |
|
|
43
|
+
| `tests/` | `tests` | `test` |
|
|
44
|
+
| `*.md` (root) | omit | `docs` |
|
|
45
|
+
| Other | infer | `chore` |
|
|
46
|
+
|
|
47
|
+
Refine type by reading diff content:
|
|
48
|
+
- New functionality → `feat`
|
|
49
|
+
- Bug fix → `fix`
|
|
50
|
+
- Documentation only → `docs`
|
|
51
|
+
- Restructure without behavior change → `refactor`
|
|
52
|
+
- Tests → `test`
|
|
53
|
+
- Build/CI/tooling → `chore`
|
|
54
|
+
- Performance → `perf`
|
|
55
|
+
|
|
56
|
+
**Grouping strategy:**
|
|
57
|
+
- Same logical change → ONE commit
|
|
58
|
+
- Unrelated changes → propose multiple atomic commits
|
|
59
|
+
- Show grouping plan, wait for user confirmation
|
|
60
|
+
|
|
61
|
+
## Step 3: Safety Checks
|
|
62
|
+
|
|
63
|
+
Before committing, verify against `release-workflow` skill safety patterns:
|
|
64
|
+
|
|
65
|
+
### Commit Message Format
|
|
66
|
+
|
|
67
|
+
Validate: `<type>(<scope>): <subject>`
|
|
68
|
+
- Lowercase, imperative mood, max 72 chars, no trailing period
|
|
69
|
+
- Type must be one of: feat, fix, docs, refactor, test, chore, perf
|
|
70
|
+
|
|
71
|
+
### Dangerous Files
|
|
72
|
+
|
|
73
|
+
Scan for files that must never be committed:
|
|
74
|
+
|
|
75
|
+
| Pattern | Risk |
|
|
76
|
+
|---------|------|
|
|
77
|
+
| `.env*` | Environment secrets |
|
|
78
|
+
| `credentials*` | Credentials |
|
|
79
|
+
| `*secret*` | Secrets |
|
|
80
|
+
| `*token*` | API tokens |
|
|
81
|
+
| `*.key`, `*.pem` | Private keys |
|
|
82
|
+
| Binary > 1MB | Large binaries |
|
|
83
|
+
|
|
84
|
+
If found: warn and exclude from staging. Show findings to user.
|
|
85
|
+
|
|
86
|
+
### Debug Code
|
|
87
|
+
|
|
88
|
+
Scan staged files for debug artifacts:
|
|
89
|
+
|
|
90
|
+
| Pattern | Description |
|
|
91
|
+
|---------|-------------|
|
|
92
|
+
| `console.log` | Debug logging |
|
|
93
|
+
| `debugger` | Debugger statements |
|
|
94
|
+
| `// TODO` without ticket | Untracked TODOs |
|
|
95
|
+
| Commented-out code blocks (>3 lines) | Dead code |
|
|
96
|
+
|
|
97
|
+
If found: warn the user. Wait for confirmation before proceeding.
|
|
98
|
+
|
|
99
|
+
## Step 4: Update CHANGELOG.md
|
|
100
|
+
|
|
101
|
+
Reference the `release-workflow` skill for changelog format conventions.
|
|
102
|
+
|
|
103
|
+
Gather commit history since last tag:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
|
107
|
+
if [[ -n "$LAST_TAG" ]]; then
|
|
108
|
+
git log "$LAST_TAG"..HEAD --oneline --no-merges
|
|
109
|
+
else
|
|
110
|
+
git log --oneline --no-merges -20
|
|
111
|
+
fi
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Update the `[Unreleased]` section in CHANGELOG.md using Keep a Changelog format:
|
|
115
|
+
|
|
116
|
+
| Commit Type | Changelog Category |
|
|
117
|
+
|------------|-------------------|
|
|
118
|
+
| `feat` | Added |
|
|
119
|
+
| `fix` | Fixed |
|
|
120
|
+
| `refactor` | Changed |
|
|
121
|
+
| `perf` | Performance |
|
|
122
|
+
| `docs` | Documentation |
|
|
123
|
+
| `chore` | Changed |
|
|
124
|
+
| `test` | (omit) |
|
|
125
|
+
|
|
126
|
+
Create the `[Unreleased]` section if it doesn't exist. Append new entries
|
|
127
|
+
without removing existing ones.
|
|
128
|
+
|
|
129
|
+
## Step 5: Update Documentation
|
|
130
|
+
|
|
131
|
+
Sync README.md and docs/GUIDE.md with current project state.
|
|
132
|
+
|
|
133
|
+
### Count Components
|
|
134
|
+
|
|
135
|
+
Scan the filesystem for accurate counts:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# Agents
|
|
139
|
+
ls agents/*.md 2>/dev/null | wc -l
|
|
140
|
+
|
|
141
|
+
# Skills
|
|
142
|
+
ls skills/*/SKILL.md 2>/dev/null | wc -l
|
|
143
|
+
|
|
144
|
+
# Commands
|
|
145
|
+
ls commands/infi-*.md 2>/dev/null | wc -l
|
|
146
|
+
|
|
147
|
+
# Rules
|
|
148
|
+
ls rules/common/*.md rules/cpp/*.md 2>/dev/null | wc -l
|
|
149
|
+
|
|
150
|
+
# Hook matchers
|
|
151
|
+
node -e "const h=require('./hooks/hooks.json');let c=0;Object.values(h.hooks||{}).forEach(a=>a.forEach(m=>c+=m.hooks.length));console.log(c)"
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Update docs/GUIDE.md
|
|
155
|
+
|
|
156
|
+
Update the component count table at the top:
|
|
157
|
+
|
|
158
|
+
```markdown
|
|
159
|
+
| 组件 | 数量 | 说明 |
|
|
160
|
+
|------|------|------|
|
|
161
|
+
| 智能体 (Agent) | <count> | ... |
|
|
162
|
+
| 技能 (Skill) | <count> | ... |
|
|
163
|
+
| 命令 (Command) | <count> | ... |
|
|
164
|
+
| 钩子 (Hook) | <count> | ... |
|
|
165
|
+
| 规则 (Rule) | <count> | ... |
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Update agent and command tables if they have changed.
|
|
169
|
+
|
|
170
|
+
### Update README.md
|
|
171
|
+
|
|
172
|
+
Update component counts in:
|
|
173
|
+
- 功能概览 table
|
|
174
|
+
- 已实现功能 section
|
|
175
|
+
- Architecture section directory listing comments
|
|
176
|
+
|
|
177
|
+
### Update CLAUDE.md
|
|
178
|
+
|
|
179
|
+
Update the Architecture section if agent/skill/command counts have changed.
|
|
180
|
+
|
|
181
|
+
## Step 6: Commit
|
|
182
|
+
|
|
183
|
+
Stage all changes (user files + CHANGELOG.md + README.md + GUIDE.md + CLAUDE.md)
|
|
184
|
+
and commit together:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
git add <files> CHANGELOG.md README.md docs/GUIDE.md CLAUDE.md
|
|
188
|
+
git commit -m "<type>(<scope>): <subject>"
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
If multiple atomic commits were planned:
|
|
192
|
+
- Include documentation updates only in the LAST commit
|
|
193
|
+
- Execute commits in planned order
|
|
194
|
+
- Display each commit hash and message
|
|
195
|
+
|
|
196
|
+
## Step 7: npm publish Workflow (if requested)
|
|
197
|
+
|
|
198
|
+
This step only applies to the `npm publish` workflow.
|
|
199
|
+
|
|
200
|
+
### Pre-flight
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
npm test
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Tests must pass. Abort if they fail.
|
|
207
|
+
|
|
208
|
+
### Bump Version
|
|
209
|
+
|
|
210
|
+
Ask user for bump level if not provided (patch/minor/major).
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
npm version <level> --no-git-tag-version
|
|
214
|
+
NEW_VERSION=$(node -p "require('./package.json').version")
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Sync version to plugin.json:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
node -e "
|
|
221
|
+
const fs = require('fs');
|
|
222
|
+
const p = JSON.parse(fs.readFileSync('.claude-plugin/plugin.json', 'utf8'));
|
|
223
|
+
p.version = '${NEW_VERSION}';
|
|
224
|
+
fs.writeFileSync('.claude-plugin/plugin.json', JSON.stringify(p, null, 2) + '\n');
|
|
225
|
+
"
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Finalize Changelog
|
|
229
|
+
|
|
230
|
+
Move `[Unreleased]` entries to a versioned section:
|
|
231
|
+
|
|
232
|
+
```markdown
|
|
233
|
+
## [X.Y.Z] - YYYY-MM-DD
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Leave empty `## [Unreleased]` at top.
|
|
237
|
+
|
|
238
|
+
### Commit, Tag, Push, Publish
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
git add package.json .claude-plugin/plugin.json CHANGELOG.md README.md docs/GUIDE.md
|
|
242
|
+
git commit -m "chore(release): v${NEW_VERSION}"
|
|
243
|
+
git tag -a "v${NEW_VERSION}" -m "Release v${NEW_VERSION}"
|
|
244
|
+
git push origin "$(git branch --show-current)" --tags
|
|
245
|
+
npm publish
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## Step 8: Status Workflow (if requested)
|
|
249
|
+
|
|
250
|
+
Read-only — no modifications.
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
echo "Version: $(node -p "require('./package.json').version")"
|
|
254
|
+
echo "Last tag: $(git describe --tags --abbrev=0 2>/dev/null || echo 'none')"
|
|
255
|
+
|
|
256
|
+
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
|
257
|
+
if [[ -n "$LAST_TAG" ]]; then
|
|
258
|
+
COUNT=$(git rev-list "$LAST_TAG"..HEAD --count)
|
|
259
|
+
echo "Commits since $LAST_TAG: $COUNT"
|
|
260
|
+
git log "$LAST_TAG"..HEAD --oneline --no-merges
|
|
261
|
+
fi
|
|
262
|
+
|
|
263
|
+
CHANGES=$(git status -s)
|
|
264
|
+
if [[ -n "$CHANGES" ]]; then
|
|
265
|
+
echo "=== Uncommitted changes ==="
|
|
266
|
+
echo "$CHANGES"
|
|
267
|
+
fi
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
Display unreleased changelog entries if CHANGELOG.md exists.
|
|
271
|
+
|
|
272
|
+
## Output Format
|
|
273
|
+
|
|
274
|
+
### git update Report
|
|
275
|
+
|
|
276
|
+
```
|
|
277
|
+
## Release: git update
|
|
278
|
+
|
|
279
|
+
### Changes Detected
|
|
280
|
+
| File | Status | Type | Scope |
|
|
281
|
+
|------|--------|------|-------|
|
|
282
|
+
| path/to/file | modified | feat | commands |
|
|
283
|
+
|
|
284
|
+
### Safety Check
|
|
285
|
+
- [x] No dangerous files
|
|
286
|
+
- [x] No debug code
|
|
287
|
+
- [x] Commit message valid
|
|
288
|
+
|
|
289
|
+
### Commits
|
|
290
|
+
| Hash | Message |
|
|
291
|
+
|------|---------|
|
|
292
|
+
| abc1234 | feat(commands): add new feature |
|
|
293
|
+
|
|
294
|
+
### Documentation Updated
|
|
295
|
+
- [x] CHANGELOG.md
|
|
296
|
+
- [x] README.md
|
|
297
|
+
- [x] docs/GUIDE.md
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### npm publish Report
|
|
301
|
+
|
|
302
|
+
```
|
|
303
|
+
## Release: npm publish
|
|
304
|
+
|
|
305
|
+
### Version
|
|
306
|
+
- Previous: X.Y.Z
|
|
307
|
+
- New: X.Y.Z
|
|
308
|
+
- Bump: patch/minor/major
|
|
309
|
+
|
|
310
|
+
### Pre-flight
|
|
311
|
+
- [x] Tests pass
|
|
312
|
+
- [x] Clean working tree
|
|
313
|
+
|
|
314
|
+
### Published
|
|
315
|
+
- Package: ecc-infisense@X.Y.Z
|
|
316
|
+
- Install: npm install -g ecc-infisense
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### status Report
|
|
320
|
+
|
|
321
|
+
```
|
|
322
|
+
## Release: status
|
|
323
|
+
|
|
324
|
+
- Version: X.Y.Z
|
|
325
|
+
- Last tag: vX.Y.Z
|
|
326
|
+
- Commits since tag: N
|
|
327
|
+
- Uncommitted changes: N files
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
## Checklist
|
|
331
|
+
|
|
332
|
+
- [ ] Detected all changes (staged + unstaged + untracked)
|
|
333
|
+
- [ ] Applied path-scope mapping from `release-workflow` skill
|
|
334
|
+
- [ ] Ran safety checks (dangerous files, debug code, message format)
|
|
335
|
+
- [ ] Updated CHANGELOG.md with correct categories
|
|
336
|
+
- [ ] Updated README.md and GUIDE.md component counts
|
|
337
|
+
- [ ] Staged only intended files (no secrets, no binaries)
|
|
338
|
+
- [ ] Commit message follows conventional commits format
|
|
339
|
+
- [ ] All validation scripts pass after changes
|
|
340
|
+
|
|
341
|
+
## Anti-Patterns
|
|
342
|
+
|
|
343
|
+
- Don't commit without running safety checks first
|
|
344
|
+
- Don't hardcode component counts — always scan the filesystem
|
|
345
|
+
- Don't skip CHANGELOG.md updates on any commit
|
|
346
|
+
- Don't mix unrelated changes in a single commit
|
|
347
|
+
- Don't publish without passing tests
|
|
348
|
+
- Don't force push or amend published commits
|
|
349
|
+
- Don't stage `.env`, credentials, or private key files
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Create new components or analyze existing ones for overlap, gaps, and consolidation.
|
|
3
|
+
category: plugin
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Component Creator
|
|
7
|
+
|
|
8
|
+
Create new ECC InfiSense components from a feature description, analyze existing components
|
|
9
|
+
for orphans, overlaps, and spec violations, or rename components for clarity.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
`/infi-component-creator [create|analyze|rename] [description]`
|
|
14
|
+
|
|
15
|
+
If mode is omitted, present an interactive menu using AskUserQuestion:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
Which mode do you want to run?
|
|
19
|
+
|
|
20
|
+
1. create — Generate components for a new feature
|
|
21
|
+
2. analyze — Scan existing components for issues and suggestions
|
|
22
|
+
3. rename — Suggest clearer names for existing components based on their content
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Mode: Create
|
|
28
|
+
|
|
29
|
+
Generate the right mix of command/agent/skill/rule files for a new feature.
|
|
30
|
+
|
|
31
|
+
### Step 1: Requirements Analysis
|
|
32
|
+
|
|
33
|
+
Parse the user's feature description. Determine which component types are needed using
|
|
34
|
+
the decision flow from `component-templates` skill. Most features need at minimum a
|
|
35
|
+
**command** (entry point) + **skill** (knowledge). Complex features also need an
|
|
36
|
+
**agent** (execution logic).
|
|
37
|
+
|
|
38
|
+
### Step 2: Architecture Decision
|
|
39
|
+
|
|
40
|
+
Delegate to `component-designer` agent to decide component boundaries, reference chains,
|
|
41
|
+
reuse opportunities, and naming. Present the proposed component list to the user via
|
|
42
|
+
AskUserQuestion. Wait for confirmation before generating files.
|
|
43
|
+
|
|
44
|
+
### Step 3: Name Customization
|
|
45
|
+
|
|
46
|
+
Present suggested names per `component-templates` naming rules. Allow the user to
|
|
47
|
+
modify names individually. Validate each name against `component-templates` skill
|
|
48
|
+
的名称验证清单. Rejected names prompt re-entry until valid.
|
|
49
|
+
|
|
50
|
+
### Step 4: Generate and Wire Components
|
|
51
|
+
|
|
52
|
+
Generate each approved component following `component-templates` skill templates.
|
|
53
|
+
Wire up Cross-References between generated components. Run validation scripts and
|
|
54
|
+
fix any failures.
|
|
55
|
+
|
|
56
|
+
### Step 5: Output Summary
|
|
57
|
+
|
|
58
|
+
Display a creation report listing files created, reference chains, and next steps.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Mode: Analyze
|
|
63
|
+
|
|
64
|
+
Scan all existing components and produce a health report.
|
|
65
|
+
|
|
66
|
+
### Step 1: Component Scan
|
|
67
|
+
|
|
68
|
+
Enumerate all agents, skills, commands, and rules. Build a reference graph by parsing
|
|
69
|
+
each component for agent, skill, and command references.
|
|
70
|
+
|
|
71
|
+
### Step 2: Issue Detection
|
|
72
|
+
|
|
73
|
+
Delegate to `component-designer` agent to check for:
|
|
74
|
+
orphan agents/skills, functional overlaps, oversized/undersized files, missing entry
|
|
75
|
+
points, missing Cross-References, missing frontmatter fields, and missing Output Format
|
|
76
|
+
sections. Severity levels: error, warning, info.
|
|
77
|
+
|
|
78
|
+
### Step 3: Suggestions and Report
|
|
79
|
+
|
|
80
|
+
For each detected issue, generate an actionable suggestion. Display a structured report
|
|
81
|
+
with component inventory, reference graph, issues found, and suggested actions.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Mode: Rename
|
|
86
|
+
|
|
87
|
+
Analyze existing component names against their content and suggest clearer names.
|
|
88
|
+
|
|
89
|
+
### Step 1: Scope Selection
|
|
90
|
+
|
|
91
|
+
Ask the user which component types to analyze (all, agents, skills, or rules).
|
|
92
|
+
If a specific file path or component name is provided, limit scope to that component.
|
|
93
|
+
|
|
94
|
+
### Step 2: Content-Name Alignment Analysis
|
|
95
|
+
|
|
96
|
+
For each component in scope, read the full content and evaluate name-content alignment,
|
|
97
|
+
naming convention compliance per `component-templates` skill, consistency with peer
|
|
98
|
+
components, and whether the name implies a different scope than actual content.
|
|
99
|
+
|
|
100
|
+
Classify each component as: **good** (no change needed), **improvable** (better
|
|
101
|
+
alternative exists), or **misleading** (rename recommended).
|
|
102
|
+
|
|
103
|
+
### Step 3: Rename Suggestions
|
|
104
|
+
|
|
105
|
+
Apply the naming derivation process from `component-templates` skill:
|
|
106
|
+
extract keywords from content, compose with hyphens, deduplicate against existing names,
|
|
107
|
+
and check consistency with peer naming styles.
|
|
108
|
+
|
|
109
|
+
Present all suggestions to the user with current name, suggested name, and reason.
|
|
110
|
+
|
|
111
|
+
### Step 4: User Confirmation
|
|
112
|
+
|
|
113
|
+
Ask the user which renames to apply: all, individually, or skip (report only).
|
|
114
|
+
For individual selection, present each suggestion via AskUserQuestion.
|
|
115
|
+
|
|
116
|
+
### Step 5: Execute Renames
|
|
117
|
+
|
|
118
|
+
For each approved rename:
|
|
119
|
+
1. Rename the file/directory
|
|
120
|
+
2. Update YAML frontmatter `name` field
|
|
121
|
+
3. Update all cross-references across commands, agents, and skills
|
|
122
|
+
4. Run validation scripts to confirm no broken references
|
|
123
|
+
|
|
124
|
+
Display a report listing renames applied, references updated, and validation results.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Cross-References
|
|
129
|
+
|
|
130
|
+
- Skill: `component-templates` — component templates, decision flow, and naming conventions
|
|
131
|
+
- Agent: `component-designer` — architecture analysis, component design, and spec compliance
|
|
132
|
+
- Related: `/infi-release` — commit created components
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Show ECC InfiSense plugin overview — available commands, agents, and skills by category.
|
|
3
|
+
category: plugin
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ECC InfiSense Helper
|
|
7
|
+
|
|
8
|
+
Display a categorized index of all available ECC InfiSense components by dynamically
|
|
9
|
+
scanning plugin directories. The index is always up-to-date with the actual filesystem.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
`/infi-ecc-helper`
|
|
14
|
+
|
|
15
|
+
No arguments. Produces a formatted overview of all installed components.
|
|
16
|
+
|
|
17
|
+
## Workflow
|
|
18
|
+
|
|
19
|
+
### Step 1: Scan and Generate Index
|
|
20
|
+
|
|
21
|
+
Delegate to `plugin-inspector` agent to:
|
|
22
|
+
|
|
23
|
+
1. Scan all component directories (agents, skills, commands, rules, hooks)
|
|
24
|
+
2. Extract metadata (name, description, category) from each component
|
|
25
|
+
3. Group components by category (plugin vs cpp)
|
|
26
|
+
4. Generate accurate component counts
|
|
27
|
+
5. Format as a categorized index with quick-start section
|
|
28
|
+
|
|
29
|
+
### Step 2: Display Results
|
|
30
|
+
|
|
31
|
+
Output the generated index directly to the user. The index includes:
|
|
32
|
+
|
|
33
|
+
- Component statistics (counts by type)
|
|
34
|
+
- Plugin management components (category: plugin)
|
|
35
|
+
- C++ development workflow components (category: cpp), sub-grouped by function
|
|
36
|
+
- Quick-start workflows for common tasks
|
|
37
|
+
- Link to detailed documentation (docs/GUIDE.md)
|
|
38
|
+
|
|
39
|
+
## Cross-References
|
|
40
|
+
|
|
41
|
+
- Agent: `plugin-inspector` — dynamic directory scanning and index generation
|
|
42
|
+
- Skill: `component-templates` — component type definitions and conventions
|
|
43
|
+
- Related: `/infi-component-creator` — create new components
|
|
44
|
+
- Related: `/infi-release` — version management and publishing
|