oh-my-customcode 0.62.5 → 0.63.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/README.md +9 -9
- package/dist/cli/index.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/templates/.claude/agents/sec-codeql-expert.md +1 -0
- package/templates/.claude/rules/SHOULD-ecomode.md +29 -0
- package/templates/.claude/skills/alembic-best-practices/SKILL.md +1 -0
- package/templates/.claude/skills/analysis/SKILL.md +1 -0
- package/templates/.claude/skills/audit-agents/SKILL.md +1 -0
- package/templates/.claude/skills/claude-code-bible/SKILL.md +1 -0
- package/templates/.claude/skills/codex-exec/SKILL.md +1 -0
- package/templates/.claude/skills/create-agent/SKILL.md +1 -0
- package/templates/.claude/skills/dag-orchestration/SKILL.md +1 -0
- package/templates/.claude/skills/dev-refactor/SKILL.md +1 -0
- package/templates/.claude/skills/dev-review/SKILL.md +1 -0
- package/templates/.claude/skills/fix-refs/SKILL.md +1 -0
- package/templates/.claude/skills/help/SKILL.md +1 -0
- package/templates/.claude/skills/lists/SKILL.md +1 -0
- package/templates/.claude/skills/memory-recall/SKILL.md +19 -0
- package/templates/.claude/skills/memory-save/SKILL.md +1 -0
- package/templates/.claude/skills/model-escalation/SKILL.md +1 -0
- package/templates/.claude/skills/monitoring-setup/SKILL.md +1 -0
- package/templates/.claude/skills/npm-audit/SKILL.md +1 -0
- package/templates/.claude/skills/npm-publish/SKILL.md +1 -0
- package/templates/.claude/skills/npm-version/SKILL.md +28 -0
- package/templates/.claude/skills/optimize-analyze/SKILL.md +1 -0
- package/templates/.claude/skills/optimize-bundle/SKILL.md +1 -0
- package/templates/.claude/skills/optimize-report/SKILL.md +1 -0
- package/templates/.claude/skills/pipeline-guards/SKILL.md +1 -0
- package/templates/.claude/skills/pr-auto-improve/SKILL.md +1 -0
- package/templates/.claude/skills/research/SKILL.md +27 -0
- package/templates/.claude/skills/sauron-watch/SKILL.md +1 -0
- package/templates/.claude/skills/skills-sh-search/SKILL.md +1 -0
- package/templates/.claude/skills/status/SKILL.md +1 -0
- package/templates/.claude/skills/stuck-recovery/SKILL.md +1 -0
- package/templates/.claude/skills/task-decomposition/SKILL.md +1 -0
- package/templates/.claude/skills/update-docs/SKILL.md +1 -0
- package/templates/.claude/skills/update-external/SKILL.md +1 -0
- package/templates/.claude/skills/vercel-deploy/SKILL.md +1 -0
- package/templates/.claude/skills/worker-reviewer-pipeline/SKILL.md +1 -0
- package/templates/.claude/skills/workflow/SKILL.md +25 -6
- package/templates/.claude/skills/workflow-resume/SKILL.md +3 -3
- package/templates/.claude/skills/writing-clearly-and-concisely/SKILL.md +1 -0
- package/templates/manifest.json +1 -1
package/README.md
CHANGED
|
@@ -21,17 +21,17 @@ npm install -g oh-my-customcode && cd your-project && omcustom init
|
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
-
## What's New in v0.
|
|
24
|
+
## What's New in v0.62.5
|
|
25
25
|
|
|
26
26
|
| Feature | Description |
|
|
27
27
|
|---------|-------------|
|
|
28
|
-
| **
|
|
29
|
-
| **
|
|
30
|
-
| **
|
|
31
|
-
| **
|
|
32
|
-
| **
|
|
33
|
-
| **
|
|
34
|
-
| **
|
|
28
|
+
| **D3 Dependency Graph** | Interactive force-directed graph visualization at `/graph` — zoom, pan, drag, search, type filters |
|
|
29
|
+
| **Playwright E2E Tests** | 11 accessibility tests with axe-core audit, `.pw.ts` extension for test isolation |
|
|
30
|
+
| **Graph Accessibility** | WCAG keyboard navigation, aria-live announcements, skip link, focus-visible, reduced-motion support |
|
|
31
|
+
| **CI Lockfile-Sync Gate** | New CI job validates bun.lockb consistency before lint/test |
|
|
32
|
+
| **Token Optimization** | HTML comment technique reduces CLAUDE.md from 550→286 lines (48% reduction) |
|
|
33
|
+
| **Workflow Engine** | YAML-defined workflow pipelines with `auto-dev` 7-step release batch |
|
|
34
|
+
| **CC v2.1.83–v2.1.85 Compat** | Conditional hook `if` field, CwdChanged/FileChanged events, managed-settings.d |
|
|
35
35
|
|
|
36
36
|
---
|
|
37
37
|
|
|
@@ -131,7 +131,7 @@ Agent(arch-documenter):haiku ┘
|
|
|
131
131
|
|----------|-------|--------|
|
|
132
132
|
| Languages | 6 | lang-golang, lang-python, lang-rust, lang-kotlin, lang-typescript, lang-java21 |
|
|
133
133
|
| Backend | 6 | be-fastapi, be-springboot, be-go-backend, be-express, be-nestjs, be-django |
|
|
134
|
-
| Frontend |
|
|
134
|
+
| Frontend | 5 | fe-vercel, fe-vuejs, fe-svelte, fe-flutter, fe-design |
|
|
135
135
|
| Data Engineering | 6 | de-airflow, de-dbt, de-spark, de-kafka, de-snowflake, de-pipeline |
|
|
136
136
|
| Database | 4 | db-supabase, db-postgres, db-redis, db-alembic |
|
|
137
137
|
| Tooling | 3 | tool-npm, tool-optimizer, tool-bun |
|
package/dist/cli/index.js
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: sec-codeql-expert
|
|
3
3
|
description: Expert security code analyst using CodeQL for vulnerability detection, call graph analysis, and SARIF output. Use for security audits, CVE triage, code pattern analysis, and vulnerability validation.
|
|
4
4
|
model: sonnet
|
|
5
|
+
effort: high
|
|
5
6
|
domain: devops
|
|
6
7
|
memory: project
|
|
7
8
|
isolation: sandbox
|
|
@@ -36,6 +36,35 @@ Ecomode: `[lang-golang-expert] ✓ src/main.go reviewed: 1 naming issue (handle_
|
|
|
36
36
|
|
|
37
37
|
Disable with: "ecomode off", "verbose mode", or "show full details".
|
|
38
38
|
|
|
39
|
+
## Input Context Pruning
|
|
40
|
+
|
|
41
|
+
Active removal of irrelevant retrieved content from agent context. Complements output compression by managing the input side of token budget.
|
|
42
|
+
|
|
43
|
+
> **Terminology**: "Input Context Pruning" (R013) manages retrieved chunks during a task. "Memory Pruning" (R011) manages behavioral memory across sessions. These are distinct concepts.
|
|
44
|
+
|
|
45
|
+
### Pruning Triggers
|
|
46
|
+
|
|
47
|
+
| Trigger | Condition | Action |
|
|
48
|
+
|---------|-----------|--------|
|
|
49
|
+
| Search overflow | Retrieved chunks > 10 | Retain top-K by relevance, prune rest |
|
|
50
|
+
| Context pressure | Context usage > 50% | Summarize oldest/lowest-relevance chunks |
|
|
51
|
+
| Multi-hop intermediate | Between retrieval hops | Replace previous hop raw results with summary |
|
|
52
|
+
|
|
53
|
+
### Pruning Strategy
|
|
54
|
+
|
|
55
|
+
| Strategy | When | Behavior |
|
|
56
|
+
|----------|------|----------|
|
|
57
|
+
| **Retain** | Directly relevant code/docs | Keep as-is |
|
|
58
|
+
| **Summarize** | Background context, prior hop results | Replace with 1-2 line summary |
|
|
59
|
+
| **Drop** | Search noise, duplicates, already-reflected info | Remove entirely |
|
|
60
|
+
|
|
61
|
+
### Rules
|
|
62
|
+
|
|
63
|
+
- Pruning is irreversible — generate summary BEFORE dropping original
|
|
64
|
+
- Prune at document/chunk level, not mid-sentence
|
|
65
|
+
- When in doubt, Summarize rather than Drop
|
|
66
|
+
- Track pruning decisions: `[Pruned] {N} chunks → {M} retained, {K} summarized, {J} dropped`
|
|
67
|
+
|
|
39
68
|
## Context Budget Management
|
|
40
69
|
|
|
41
70
|
Task-type-aware context thresholds that trigger ecomode earlier for context-heavy operations.
|
|
@@ -3,6 +3,7 @@ name: memory-recall
|
|
|
3
3
|
description: Search and recall memories from claude-mem
|
|
4
4
|
scope: core
|
|
5
5
|
argument-hint: "<query> [--recent] [--limit <n>]"
|
|
6
|
+
user-invocable: true
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# Memory Recall Skill
|
|
@@ -58,6 +59,24 @@ avoid:
|
|
|
58
59
|
- Special characters or complex syntax
|
|
59
60
|
```
|
|
60
61
|
|
|
62
|
+
## Retrieval Strategy
|
|
63
|
+
|
|
64
|
+
### Recall-Precision Tradeoff
|
|
65
|
+
|
|
66
|
+
Default bias: **recall > precision** — it is easier to filter out irrelevant results (false positives) than to recover missed information (false negatives).
|
|
67
|
+
|
|
68
|
+
| Task Type | Bias | Recommended --limit | Rationale |
|
|
69
|
+
|-----------|------|--------------------:|-----------|
|
|
70
|
+
| Debugging / Investigation | High recall (16:1) | 10-15 | Cast wide net, prune later |
|
|
71
|
+
| Decision reference | Balanced | 5 (default) | Moderate breadth with manageable noise |
|
|
72
|
+
| Specific fact lookup | High precision | 3 | Narrow, targeted retrieval |
|
|
73
|
+
|
|
74
|
+
### Guidelines
|
|
75
|
+
|
|
76
|
+
- **Over-retrieve, then filter**: When uncertain, request more results and discard irrelevant ones in post-processing
|
|
77
|
+
- **Narrow progressively**: Start broad, refine query only if results are noisy — avoid starting too narrow
|
|
78
|
+
- **Combine temporal + semantic**: Add date filters (`--date`) to semantic queries for better precision without sacrificing recall
|
|
79
|
+
|
|
61
80
|
## Output Format
|
|
62
81
|
|
|
63
82
|
### Basic Search
|
|
@@ -4,6 +4,7 @@ description: Manage semantic versions for npm packages
|
|
|
4
4
|
scope: package
|
|
5
5
|
argument-hint: "<major|minor|patch> [--no-tag] [--no-commit]"
|
|
6
6
|
disable-model-invocation: true
|
|
7
|
+
user-invocable: true
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# NPM Version Management Skill
|
|
@@ -74,3 +75,30 @@ npm-version major
|
|
|
74
75
|
# Update version without creating git tag
|
|
75
76
|
npm-version patch --no-tag
|
|
76
77
|
```
|
|
78
|
+
|
|
79
|
+
## Release Branch Integration
|
|
80
|
+
|
|
81
|
+
When working with `auto-tag.yml` (automatic tag creation on release PR merge):
|
|
82
|
+
|
|
83
|
+
1. `.npmrc` has `git-tag-version=false` — prevents local tag creation during `npm version`
|
|
84
|
+
2. `auto-tag.yml` creates the tag on the **merge commit** when a `release/*` PR is merged to `develop`
|
|
85
|
+
3. Do NOT manually push tags — let the CI workflow handle tag creation
|
|
86
|
+
|
|
87
|
+
### Release Workflow
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
1. Create release branch: release/vX.Y.Z
|
|
91
|
+
2. Run version bump (npm version / manual edit) ← no local tag created
|
|
92
|
+
3. Build dist, commit, push
|
|
93
|
+
4. Create PR → merge to develop
|
|
94
|
+
5. auto-tag.yml creates vX.Y.Z tag on merge commit ← correct tag target
|
|
95
|
+
6. release.yml triggers on tag → GitHub Release + npm publish
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Troubleshooting
|
|
99
|
+
|
|
100
|
+
If a tag already exists on remote (from a previous failed attempt):
|
|
101
|
+
```bash
|
|
102
|
+
git push origin :refs/tags/vX.Y.Z # delete remote tag
|
|
103
|
+
# Then re-merge or let auto-tag.yml handle it
|
|
104
|
+
```
|
|
@@ -228,6 +228,33 @@ Convergence expected by round 3. Hard stop at round 30.
|
|
|
228
228
|
| Ecomode | Auto-activate for team result aggregation (R013) |
|
|
229
229
|
| Intent display | Show research plan before execution (R015) |
|
|
230
230
|
|
|
231
|
+
## Retrieval-Reasoning Separation
|
|
232
|
+
|
|
233
|
+
Retrieval and reasoning are distinct cognitive operations that benefit from explicit role separation. Mixing them in a single agent degrades both: retrieval becomes biased by premature conclusions, and reasoning gets polluted by search noise.
|
|
234
|
+
|
|
235
|
+
### Principle
|
|
236
|
+
|
|
237
|
+
| Role | Phase | Model | Responsibility |
|
|
238
|
+
|------|-------|-------|----------------|
|
|
239
|
+
| Retriever | Phase 1 | sonnet (fast, broad) | Gather, catalog, enumerate — no judgment |
|
|
240
|
+
| Reasoner | Phase 2-3 | opus (deep, precise) | Verify, synthesize, judge — no new retrieval |
|
|
241
|
+
|
|
242
|
+
### Why Separate
|
|
243
|
+
|
|
244
|
+
- **Retrieval bias**: A reasoning agent searching for evidence tends to confirm existing hypotheses (confirmation bias)
|
|
245
|
+
- **Context pollution**: Raw search results mixed with analysis obscure both
|
|
246
|
+
- **Cost efficiency**: Retrieval needs speed and breadth (cheaper model); reasoning needs depth (capable model)
|
|
247
|
+
- **Debuggability**: When results are wrong, separated roles make it clear whether the problem was bad retrieval or bad reasoning
|
|
248
|
+
|
|
249
|
+
### Application in Research Workflow
|
|
250
|
+
|
|
251
|
+
| Phase | Role | Separation Rule |
|
|
252
|
+
|-------|------|-----------------|
|
|
253
|
+
| Phase 1 (10 teams) | Retriever | Teams gather and catalog only. No ADOPT/AVOID judgments. |
|
|
254
|
+
| Phase 2 (Verification) | Reasoner | Verifiers challenge claims using Phase 1 data. No new searches. |
|
|
255
|
+
| Phase 3 (Synthesis) | Reasoner | Synthesizer produces taxonomy from verified findings only. |
|
|
256
|
+
| Phase 4 (Output) | Reporter | Formats and persists. No new analysis. |
|
|
257
|
+
|
|
231
258
|
## Model Selection
|
|
232
259
|
|
|
233
260
|
| Phase | Model | Rationale |
|
|
@@ -19,13 +19,32 @@ argument-hint: "<workflow-name> | (no args to list available)"
|
|
|
19
19
|
|
|
20
20
|
## Behavior
|
|
21
21
|
|
|
22
|
-
### List Mode (no arguments)
|
|
22
|
+
### List Mode (no arguments or --list flag)
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
```
|
|
24
|
+
Execute these steps to display available workflows:
|
|
25
|
+
|
|
26
|
+
1. **Scan built-in workflows**: Use `Glob("workflows/*.yaml")` (NOT templates/) to find all workflow definitions
|
|
27
|
+
2. **Extract metadata**: For each YAML file found, use `Bash` to extract name and description:
|
|
28
|
+
```bash
|
|
29
|
+
for f in workflows/*.yaml; do
|
|
30
|
+
name=$(grep -m1 '^name:' "$f" | sed 's/^name: *//' | tr -d '"')
|
|
31
|
+
desc=$(grep -m1 '^description:' "$f" | sed 's/^description: *//' | tr -d '"')
|
|
32
|
+
echo " $name — $desc"
|
|
33
|
+
done
|
|
34
|
+
```
|
|
35
|
+
3. **Scan template workflows**: Use `Glob("templates/workflows/*.yaml")` for template examples
|
|
36
|
+
4. **Extract template metadata**: Same extraction as step 2 for `templates/workflows/*.yaml`
|
|
37
|
+
5. **Display formatted output**:
|
|
38
|
+
```
|
|
39
|
+
Available workflows:
|
|
40
|
+
{name} — {description}
|
|
41
|
+
{name} — {description}
|
|
42
|
+
|
|
43
|
+
Template workflows (in templates/workflows/):
|
|
44
|
+
{name} — {description}
|
|
45
|
+
```
|
|
46
|
+
6. If no workflows found, display: "No workflows found in workflows/ directory."
|
|
47
|
+
7. If YAML parsing fails for a file, skip it and show: ` {filename} — (parse error, skipped)`
|
|
29
48
|
|
|
30
49
|
### Run Mode (with workflow name)
|
|
31
50
|
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: workflow
|
|
2
|
+
name: omcustom:workflow:resume
|
|
3
3
|
description: Resume a halted workflow from its last failure point
|
|
4
4
|
scope: harness
|
|
5
5
|
user-invocable: true
|
|
6
6
|
effort: medium
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# /workflow:resume — Resume Halted Workflow
|
|
9
|
+
# /omcustom:workflow:resume — Resume Halted Workflow
|
|
10
10
|
|
|
11
11
|
## Usage
|
|
12
12
|
|
|
13
13
|
```
|
|
14
|
-
/workflow:resume # Find and resume the most recent halted workflow
|
|
14
|
+
/omcustom:workflow:resume # Find and resume the most recent halted workflow
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
## Behavior
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: writing-clearly-and-concisely
|
|
3
3
|
description: Apply Strunk's timeless writing rules to ANY prose humans will read—documentation, commit messages, error messages, explanations, reports, or UI text. Makes your writing clearer, stronger, and more professional.
|
|
4
4
|
scope: core
|
|
5
|
+
user-invocable: false
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# Writing Clearly and Concisely
|
package/templates/manifest.json
CHANGED