dsh-ecc-skills 0.4.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 +22 -0
- package/README.md +99 -0
- package/cordis.patch.yml +5 -0
- package/lib/index.js +195 -0
- package/package.json +46 -0
- package/skills/accessibility/SKILL.md +147 -0
- package/skills/agent-architecture-audit/SKILL.md +257 -0
- package/skills/agent-eval/SKILL.md +147 -0
- package/skills/agent-harness-construction/SKILL.md +74 -0
- package/skills/agent-introspection-debugging/SKILL.md +154 -0
- package/skills/agent-payment-x402/SKILL.md +225 -0
- package/skills/agent-self-evaluation/SKILL.md +182 -0
- package/skills/agent-sort/SKILL.md +216 -0
- package/skills/agentic-engineering/SKILL.md +64 -0
- package/skills/agentic-os/SKILL.md +388 -0
- package/skills/ai-first-engineering/SKILL.md +52 -0
- package/skills/ai-regression-testing/SKILL.md +386 -0
- package/skills/android-clean-architecture/SKILL.md +340 -0
- package/skills/angular-developer/SKILL.md +155 -0
- package/skills/api-connector-builder/SKILL.md +121 -0
- package/skills/api-design/SKILL.md +524 -0
- package/skills/architecture-decision-records/SKILL.md +180 -0
- package/skills/article-writing/SKILL.md +80 -0
- package/skills/automation-audit-ops/SKILL.md +143 -0
- package/skills/autonomous-agent-harness/SKILL.md +274 -0
- package/skills/autonomous-loops/SKILL.md +611 -0
- package/skills/backend-patterns/SKILL.md +562 -0
- package/skills/benchmark/SKILL.md +95 -0
- package/skills/benchmark-methodology/SKILL.md +191 -0
- package/skills/benchmark-optimization-loop/SKILL.md +71 -0
- package/skills/blender-motion-state-inspection/SKILL.md +165 -0
- package/skills/blueprint/SKILL.md +106 -0
- package/skills/brand-discovery/SKILL.md +145 -0
- package/skills/brand-voice/SKILL.md +98 -0
- package/skills/browser-qa/SKILL.md +105 -0
- package/skills/bun-runtime/SKILL.md +85 -0
- package/skills/canary-watch/SKILL.md +108 -0
- package/skills/carrier-relationship-management/SKILL.md +212 -0
- package/skills/cisco-ios-patterns/SKILL.md +164 -0
- package/skills/ck/SKILL.md +148 -0
- package/skills/claude-devfleet/SKILL.md +112 -0
- package/skills/click-path-audit/SKILL.md +245 -0
- package/skills/clickhouse-io/SKILL.md +445 -0
- package/skills/code-tour/SKILL.md +254 -0
- package/skills/codebase-onboarding/SKILL.md +234 -0
- package/skills/codehealth-mcp/SKILL.md +167 -0
- package/skills/coding-standards/SKILL.md +551 -0
- package/skills/competitive-platform-analysis/SKILL.md +214 -0
- package/skills/competitive-report-structure/SKILL.md +162 -0
- package/skills/compose-multiplatform-patterns/SKILL.md +300 -0
- package/skills/config-gc/SKILL.md +120 -0
- package/skills/configure-ecc/SKILL.md +206 -0
- package/skills/connections-optimizer/SKILL.md +190 -0
- package/skills/content-engine/SKILL.md +132 -0
- package/skills/content-hash-cache-pattern/SKILL.md +162 -0
- package/skills/context-budget/SKILL.md +136 -0
- package/skills/continuous-agent-loop/SKILL.md +46 -0
- package/skills/contract-first/SKILL.md +287 -0
- package/skills/cost-aware-llm-pipeline/SKILL.md +184 -0
- package/skills/cost-tracking/SKILL.md +97 -0
- package/skills/council/SKILL.md +204 -0
- package/skills/council-multi-model/SKILL.md +167 -0
- package/skills/cpp-coding-standards/SKILL.md +724 -0
- package/skills/cpp-testing/SKILL.md +325 -0
- package/skills/crosspost/SKILL.md +112 -0
- package/skills/csharp-testing/SKILL.md +322 -0
- package/skills/customer-billing-ops/SKILL.md +141 -0
- package/skills/customs-trade-compliance/SKILL.md +263 -0
- package/skills/dart-flutter-patterns/SKILL.md +564 -0
- package/skills/dashboard-builder/SKILL.md +109 -0
- package/skills/data-scraper-agent/SKILL.md +765 -0
- package/skills/data-throughput-accelerator/SKILL.md +74 -0
- package/skills/database-migrations/SKILL.md +430 -0
- package/skills/deep-research/SKILL.md +160 -0
- package/skills/defi-amm-security/SKILL.md +167 -0
- package/skills/delivery-gate/SKILL.md +126 -0
- package/skills/deployment-patterns/SKILL.md +428 -0
- package/skills/design-system/SKILL.md +83 -0
- package/skills/dev-team/SKILL.md +203 -0
- package/skills/django-celery/SKILL.md +458 -0
- package/skills/django-patterns/SKILL.md +735 -0
- package/skills/django-security/SKILL.md +644 -0
- package/skills/django-tdd/SKILL.md +730 -0
- package/skills/django-verification/SKILL.md +470 -0
- package/skills/dmux-workflows/SKILL.md +192 -0
- package/skills/docker-patterns/SKILL.md +520 -0
- package/skills/documentation-lookup/SKILL.md +91 -0
- package/skills/dotnet-patterns/SKILL.md +322 -0
- package/skills/dynamic-workflow-mode/SKILL.md +124 -0
- package/skills/e2e-testing/SKILL.md +327 -0
- package/skills/ecc-tools-cost-audit/SKILL.md +161 -0
- package/skills/email-ops/SKILL.md +122 -0
- package/skills/energy-procurement/SKILL.md +228 -0
- package/skills/enterprise-agent-ops/SKILL.md +51 -0
- package/skills/error-handling/SKILL.md +377 -0
- package/skills/eval-harness/SKILL.md +271 -0
- package/skills/evm-token-decimals/SKILL.md +131 -0
- package/skills/exa-search/SKILL.md +108 -0
- package/skills/fal-ai-media/SKILL.md +289 -0
- package/skills/fastapi-patterns/SKILL.md +514 -0
- package/skills/finance-billing-ops/SKILL.md +128 -0
- package/skills/flox-environments/SKILL.md +497 -0
- package/skills/flutter-dart-code-review/SKILL.md +436 -0
- package/skills/foundation-models-on-device/SKILL.md +243 -0
- package/skills/frontend-a11y/SKILL.md +446 -0
- package/skills/frontend-design-direction/SKILL.md +93 -0
- package/skills/frontend-patterns/SKILL.md +657 -0
- package/skills/fsharp-testing/SKILL.md +281 -0
- package/skills/gan-style-harness/SKILL.md +279 -0
- package/skills/generating-python-installer/SKILL.md +820 -0
- package/skills/git-workflow/SKILL.md +716 -0
- package/skills/github-ops/SKILL.md +145 -0
- package/skills/golang-patterns/SKILL.md +676 -0
- package/skills/golang-testing/SKILL.md +721 -0
- package/skills/google-workspace-ops/SKILL.md +96 -0
- package/skills/growth-log/SKILL.md +128 -0
- package/skills/healthcare-cdss-patterns/SKILL.md +246 -0
- package/skills/healthcare-emr-patterns/SKILL.md +160 -0
- package/skills/healthcare-eval-harness/SKILL.md +208 -0
- package/skills/healthcare-phi-compliance/SKILL.md +146 -0
- package/skills/hermes-imports/SKILL.md +89 -0
- package/skills/hexagonal-architecture/SKILL.md +277 -0
- package/skills/hipaa-compliance/SKILL.md +79 -0
- package/skills/homelab-network-readiness/SKILL.md +170 -0
- package/skills/homelab-network-setup/SKILL.md +130 -0
- package/skills/homelab-pihole-dns/SKILL.md +275 -0
- package/skills/homelab-vlan-segmentation/SKILL.md +312 -0
- package/skills/homelab-wireguard-vpn/SKILL.md +306 -0
- package/skills/hookify-rules/SKILL.md +128 -0
- package/skills/inherit-legacy-style/SKILL.md +157 -0
- package/skills/intent-driven-development/SKILL.md +360 -0
- package/skills/inventory-demand-planning/SKILL.md +247 -0
- package/skills/investor-materials/SKILL.md +97 -0
- package/skills/investor-outreach/SKILL.md +92 -0
- package/skills/ios-icon-gen/SKILL.md +158 -0
- package/skills/iterative-retrieval/SKILL.md +212 -0
- package/skills/ito-baskets/SKILL.md +263 -0
- package/skills/ito-compute/SKILL.md +151 -0
- package/skills/ito-inference/SKILL.md +119 -0
- package/skills/ito-training/SKILL.md +123 -0
- package/skills/java-coding-standards/SKILL.md +384 -0
- package/skills/jira-integration/SKILL.md +303 -0
- package/skills/jpa-patterns/SKILL.md +152 -0
- package/skills/knowledge-ops/SKILL.md +155 -0
- package/skills/kotlin-coroutines-flows/SKILL.md +285 -0
- package/skills/kotlin-exposed-patterns/SKILL.md +720 -0
- package/skills/kotlin-ktor-patterns/SKILL.md +690 -0
- package/skills/kotlin-patterns/SKILL.md +712 -0
- package/skills/kotlin-testing/SKILL.md +825 -0
- package/skills/kubernetes-patterns/SKILL.md +756 -0
- package/skills/laravel-patterns/SKILL.md +416 -0
- package/skills/laravel-plugin-discovery/SKILL.md +230 -0
- package/skills/laravel-security/SKILL.md +948 -0
- package/skills/laravel-tdd/SKILL.md +675 -0
- package/skills/laravel-verification/SKILL.md +180 -0
- package/skills/latency-critical-systems/SKILL.md +75 -0
- package/skills/lead-intelligence/SKILL.md +322 -0
- package/skills/liquid-glass-design/SKILL.md +279 -0
- package/skills/living-docs-governance/SKILL.md +137 -0
- package/skills/llm-trading-agent-security/SKILL.md +147 -0
- package/skills/logistics-exception-management/SKILL.md +222 -0
- package/skills/loop-design-check/SKILL.md +143 -0
- package/skills/mailtrap-email-integration/SKILL.md +77 -0
- package/skills/make-interfaces-feel-better/SKILL.md +152 -0
- package/skills/manim-video/SKILL.md +90 -0
- package/skills/market-research/SKILL.md +76 -0
- package/skills/marketing-campaign/SKILL.md +114 -0
- package/skills/mcp-server-patterns/SKILL.md +70 -0
- package/skills/messages-ops/SKILL.md +105 -0
- package/skills/ml-adoption-playbook/SKILL.md +57 -0
- package/skills/mle-workflow/SKILL.md +348 -0
- package/skills/motion-advanced/SKILL.md +597 -0
- package/skills/motion-foundations/SKILL.md +300 -0
- package/skills/motion-patterns/SKILL.md +435 -0
- package/skills/motion-ui/SKILL.md +576 -0
- package/skills/mysql-patterns/SKILL.md +413 -0
- package/skills/nanoclaw-repl/SKILL.md +34 -0
- package/skills/nasiko-control-plane/SKILL.md +49 -0
- package/skills/nestjs-patterns/SKILL.md +231 -0
- package/skills/netmiko-ssh-automation/SKILL.md +174 -0
- package/skills/network-bgp-diagnostics/SKILL.md +168 -0
- package/skills/network-config-validation/SKILL.md +211 -0
- package/skills/network-interface-health/SKILL.md +153 -0
- package/skills/nextjs-turbopack/SKILL.md +58 -0
- package/skills/nodejs-keccak256/SKILL.md +103 -0
- package/skills/nutrient-document-processing/SKILL.md +168 -0
- package/skills/nuxt4-patterns/SKILL.md +101 -0
- package/skills/opensource-pipeline/SKILL.md +256 -0
- package/skills/orch-add-feature/SKILL.md +45 -0
- package/skills/orch-build-mvp/SKILL.md +49 -0
- package/skills/orch-change-feature/SKILL.md +43 -0
- package/skills/orch-fix-defect/SKILL.md +43 -0
- package/skills/orch-pipeline/SKILL.md +121 -0
- package/skills/orch-refine-code/SKILL.md +44 -0
- package/skills/parallel-execution-optimizer/SKILL.md +74 -0
- package/skills/perl-patterns/SKILL.md +505 -0
- package/skills/perl-security/SKILL.md +504 -0
- package/skills/perl-testing/SKILL.md +476 -0
- package/skills/plan-canvas/SKILL.md +196 -0
- package/skills/plankton-code-quality/SKILL.md +237 -0
- package/skills/postgres-patterns/SKILL.md +148 -0
- package/skills/prediction-market-oracle-research/SKILL.md +64 -0
- package/skills/prediction-market-risk-review/SKILL.md +61 -0
- package/skills/prisma-patterns/SKILL.md +401 -0
- package/skills/product-capability/SKILL.md +142 -0
- package/skills/product-lens/SKILL.md +93 -0
- package/skills/production-audit/SKILL.md +207 -0
- package/skills/production-scheduling/SKILL.md +238 -0
- package/skills/project-flow-ops/SKILL.md +112 -0
- package/skills/prompt-optimizer/SKILL.md +398 -0
- package/skills/python-patterns/SKILL.md +751 -0
- package/skills/python-testing/SKILL.md +817 -0
- package/skills/pytorch-patterns/SKILL.md +397 -0
- package/skills/quality-nonconformance/SKILL.md +260 -0
- package/skills/quarkus-patterns/SKILL.md +723 -0
- package/skills/quarkus-security/SKILL.md +468 -0
- package/skills/quarkus-tdd/SKILL.md +812 -0
- package/skills/quarkus-verification/SKILL.md +481 -0
- package/skills/ralphinho-rfc-pipeline/SKILL.md +68 -0
- package/skills/react-native-patterns/SKILL.md +326 -0
- package/skills/react-patterns/SKILL.md +342 -0
- package/skills/react-performance/SKILL.md +575 -0
- package/skills/react-testing/SKILL.md +424 -0
- package/skills/recsys-pipeline-architect/SKILL.md +115 -0
- package/skills/recursive-decision-ledger/SKILL.md +81 -0
- package/skills/redis-patterns/SKILL.md +404 -0
- package/skills/regex-vs-llm-structured-text/SKILL.md +221 -0
- package/skills/remotion-video-creation/SKILL.md +43 -0
- package/skills/repo-scan/SKILL.md +170 -0
- package/skills/research-ops/SKILL.md +113 -0
- package/skills/returns-reverse-logistics/SKILL.md +240 -0
- package/skills/rules-distill/SKILL.md +265 -0
- package/skills/rust-patterns/SKILL.md +500 -0
- package/skills/rust-testing/SKILL.md +501 -0
- package/skills/safety-guard/SKILL.md +76 -0
- package/skills/santa-method/SKILL.md +307 -0
- package/skills/scientific-db-pubmed-database/SKILL.md +176 -0
- package/skills/scientific-db-uspto-database/SKILL.md +178 -0
- package/skills/scientific-pkg-gget/SKILL.md +167 -0
- package/skills/scientific-thinking-literature-review/SKILL.md +193 -0
- package/skills/scientific-thinking-scholar-evaluation/SKILL.md +161 -0
- package/skills/search-first/SKILL.md +183 -0
- package/skills/security-bounty-hunter/SKILL.md +100 -0
- package/skills/security-scan/SKILL.md +166 -0
- package/skills/seo/SKILL.md +155 -0
- package/skills/skill-scout/SKILL.md +141 -0
- package/skills/skill-stocktake/SKILL.md +195 -0
- package/skills/social-graph-ranker/SKILL.md +155 -0
- package/skills/social-publisher/SKILL.md +130 -0
- package/skills/springboot-patterns/SKILL.md +315 -0
- package/skills/springboot-security/SKILL.md +273 -0
- package/skills/springboot-tdd/SKILL.md +159 -0
- package/skills/springboot-verification/SKILL.md +232 -0
- package/skills/swift-actor-persistence/SKILL.md +144 -0
- package/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/skills/swift-protocol-di-testing/SKILL.md +191 -0
- package/skills/swiftui-patterns/SKILL.md +259 -0
- package/skills/taste/SKILL.md +264 -0
- package/skills/tdd-workflow/SKILL.md +583 -0
- package/skills/team-agent-orchestration/SKILL.md +111 -0
- package/skills/team-builder/SKILL.md +169 -0
- package/skills/terminal-opener/SKILL.md +55 -0
- package/skills/terminal-ops/SKILL.md +110 -0
- package/skills/tinystruct-patterns/SKILL.md +279 -0
- package/skills/token-budget-advisor/SKILL.md +134 -0
- package/skills/ui-demo/SKILL.md +466 -0
- package/skills/ui-to-vue/SKILL.md +135 -0
- package/skills/uncloud/SKILL.md +344 -0
- package/skills/unified-memory/SKILL.md +170 -0
- package/skills/unified-notifications-ops/SKILL.md +188 -0
- package/skills/verification-loop/SKILL.md +129 -0
- package/skills/video-editing/SKILL.md +311 -0
- package/skills/videodb/SKILL.md +375 -0
- package/skills/vite-patterns/SKILL.md +450 -0
- package/skills/vue-patterns/SKILL.md +471 -0
- package/skills/windows-desktop-e2e/SKILL.md +888 -0
- package/skills/workspace-surface-audit/SKILL.md +126 -0
- package/skills/x-api/SKILL.md +235 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: config-gc
|
|
3
|
+
description: Garbage collection for your Claude Code configuration. Periodically scans ~/.claude (skills, memory, hooks, permissions, MCP servers, caches) for redundant, stale, orphaned, or low-value items, then walks the user through a confirm-each-deletion cleanup. Use when the user says "clean up my config", "config GC", "too many skills", "audit my setup", "my .claude is bloated", or asks for a periodic config review.
|
|
4
|
+
metadata:
|
|
5
|
+
origin: ECC
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Config GC — Garbage Collection for Claude Code Setups
|
|
9
|
+
|
|
10
|
+
Borrowed from runtime garbage collection: periodically scan for objects that are no longer referenced, redundant, expired, or low-value, and reclaim the space. The critical difference: **here, collection requires a human in the loop. Never delete autonomously.**
|
|
11
|
+
|
|
12
|
+
## When to Activate
|
|
13
|
+
|
|
14
|
+
- The user asks to clean up, audit, or slim down their Claude Code configuration
|
|
15
|
+
- The user complains about too many skills, noisy hooks, or slow session startup
|
|
16
|
+
- A monthly/periodic config review is due
|
|
17
|
+
- After installing a large skill pack (e.g. this repo), to reconcile overlaps with existing setup
|
|
18
|
+
|
|
19
|
+
Do NOT activate for: cleaning project source code (that's refactoring), clearing chat history, or uninstalling Claude Code itself.
|
|
20
|
+
|
|
21
|
+
## Design Philosophy
|
|
22
|
+
|
|
23
|
+
1. **Append-only configs leak.** Skills, memory files, hooks, and permission entries only ever get added. Without periodic review they rot silently.
|
|
24
|
+
2. **Regular audits beat one-time purges.** Scan every ~30 days, propose a small batch of candidates each time.
|
|
25
|
+
3. **Per-channel strategies.** Each accumulation type (skills, hooks, permissions, ...) has its own staleness signals — don't apply one rule everywhere.
|
|
26
|
+
4. **Soft-delete first.** Rename to `.disabled` > move to `~/.claude/_gc_trash/` > real deletion. Always keep an undo path.
|
|
27
|
+
5. **Forced human-in-the-loop.** Every candidate gets its own `[y/n/skip]` confirmation. No "yes to all" shortcut.
|
|
28
|
+
6. **Keep a log.** Every GC run appends to `~/.claude/gc_log.md`: what was touched, why, and how to undo it.
|
|
29
|
+
|
|
30
|
+
## Scan Channels
|
|
31
|
+
|
|
32
|
+
| # | Channel | Path | Staleness / redundancy signals |
|
|
33
|
+
|---|---------|------|--------------------------------|
|
|
34
|
+
| 1 | Skills | `~/.claude/skills/*/` | Heavily overlapping names; never triggered in recent transcripts; domain mismatch with the user's actual work; broken or empty SKILL.md |
|
|
35
|
+
| 2 | Memory | `~/.claude/**/memory/*.md` + its index | Multiple index entries for one topic; contents contradicting newer entries; dates that have passed; orphan files missing from the index; sub-100-word fragments that should merge |
|
|
36
|
+
| 3 | Hooks | `~/.claude/hooks/` + settings | Scripts present on disk but referenced by no hook config; old versions superseded by rewrites |
|
|
37
|
+
| 4 | Permissions | `permissions.allow` in `settings.json` / `settings.local.json` | Duplicate entries; specific entries already covered by a wildcard (e.g. `Bash(git push)` when `Bash(*)` is allowed); one-off grants from past experiments |
|
|
38
|
+
| 5 | MCP servers | `~/.claude.json` or project `.mcp.json` | Servers that fail to connect; functional duplicates; long-unused |
|
|
39
|
+
| 6 | Scheduled reminders / jobs | wherever the user keeps them | Fired one-shots older than 30 days; jobs whose target scripts no longer exist |
|
|
40
|
+
| 7 | Project history | `~/.claude/projects/*/` | Stale handoff snapshots; session records superseded by newer state |
|
|
41
|
+
| 8 | Runtime caches | `cache/`, `file-history/`, `logs/`, `shell-snapshots/` | Sort by size and mtime; propose items >30 days old and large |
|
|
42
|
+
|
|
43
|
+
## Workflow
|
|
44
|
+
|
|
45
|
+
1. **Scan** all channels (or the subset the user names). Collect candidates with: path, channel, signal that flagged it, size, last-modified.
|
|
46
|
+
2. **Rank** by confidence (broken/orphaned = high; merely old = low) and present as a numbered table. Cap each run at ~20 candidates — GC is periodic, not exhaustive.
|
|
47
|
+
3. **Confirm one by one.** For each candidate show the evidence, then ask `[y/n/skip]`. The user can stop at any point.
|
|
48
|
+
4. **Soft-delete confirmed items**: prefer `.disabled` rename for skills/hooks and `_gc_trash/<date>/` move for files. Permission entries live in JSON (no comments possible): back up the settings file, record each removed entry verbatim in `gc_log.md`, then remove it from the `allow` array with `jq`. Only hard-delete when the user explicitly asks.
|
|
49
|
+
5. **Log** the run to `~/.claude/gc_log.md`: timestamp, items actioned, undo instructions.
|
|
50
|
+
6. **Report**: reclaimed size, channels still healthy, suggested next review date.
|
|
51
|
+
|
|
52
|
+
## Example Scan Commands
|
|
53
|
+
|
|
54
|
+
Orphaned hook scripts (channel 3) — scripts on disk that no hook config references:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
for f in ~/.claude/hooks/*; do
|
|
58
|
+
name=$(basename "$f")
|
|
59
|
+
grep -rq "$name" ~/.claude/settings.json ~/.claude/settings.local.json 2>/dev/null \
|
|
60
|
+
|| echo "ORPHAN: $f"
|
|
61
|
+
done
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Redundant permission entries (channel 4) — duplicates, and specific grants shadowed by a wildcard:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
jq -r '.permissions.allow[]' ~/.claude/settings.local.json | sort | uniq -d
|
|
68
|
+
if jq -e '.permissions.allow | index("Bash(*)")' ~/.claude/settings.local.json >/dev/null; then
|
|
69
|
+
jq -r '.permissions.allow[]' ~/.claude/settings.local.json \
|
|
70
|
+
| grep '^Bash(' | grep -vF 'Bash(*)'
|
|
71
|
+
fi
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Largest stale caches (channel 8) — `du -k` instead of GNU-only `find -printf`, so it works on macOS/BSD too:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
find ~/.claude/file-history ~/.claude/shell-snapshots -type f -mtime +30 \
|
|
78
|
+
-exec du -k {} + 2>/dev/null | sort -rn | head -20
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Soft-delete with undo path (capture the date once so the log can't disagree with the directory):
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
gc_date=$(date +%Y-%m-%d)
|
|
85
|
+
mkdir -p ~/.claude/_gc_trash/$gc_date
|
|
86
|
+
mv ~/.claude/skills/dead-skill ~/.claude/_gc_trash/$gc_date/
|
|
87
|
+
echo "$(date -Iseconds) moved skills/dead-skill -> _gc_trash/$gc_date/ (undo: mv back)" >> ~/.claude/gc_log.md
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Removing a confirmed-redundant permission entry (JSON has no comments — back up, log, then edit):
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
cp ~/.claude/settings.local.json ~/.claude/settings.local.json.bak
|
|
94
|
+
echo "$(date -Iseconds) removed permission entry: Bash(git push) (undo: restore from .bak or re-add)" >> ~/.claude/gc_log.md
|
|
95
|
+
jq '.permissions.allow -= ["Bash(git push)"]' ~/.claude/settings.local.json.bak \
|
|
96
|
+
> ~/.claude/settings.local.json
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Anti-Patterns
|
|
100
|
+
|
|
101
|
+
- **Bulk approval.** Asking "delete all 15? [y/n]" defeats the design. One item, one decision.
|
|
102
|
+
- **Hard-deleting on first pass.** If there's no `_gc_trash/` copy or `.disabled` rename, you did it wrong.
|
|
103
|
+
- **Treating "old" as "dead".** A skill untouched for 60 days may be seasonal (tax season, quarterly reviews). Age is a signal, not a verdict — that's why a human confirms.
|
|
104
|
+
- **Cleaning memory by truncation.** Merging two contradicting memory files requires reading both and keeping the newer truth, not deleting the longer one.
|
|
105
|
+
- **Touching anything outside `~/.claude`** (or the project's `.claude/`). Config GC never wanders into source trees.
|
|
106
|
+
|
|
107
|
+
## Best Practices
|
|
108
|
+
|
|
109
|
+
- Run after big additions, not just on a calendar: installing a 50-skill pack is exactly when overlap with existing skills appears.
|
|
110
|
+
- When two skills overlap, prefer disabling the one with the weaker trigger description — it's the one that was probably never firing anyway.
|
|
111
|
+
- Permission cleanup is the highest-value channel per minute spent: redundant allow-entries make security review harder.
|
|
112
|
+
- Keep `gc_log.md` forever. It's tiny, and "when did I disable that hook and why" comes up more often than you'd think.
|
|
113
|
+
|
|
114
|
+
## Related Skills
|
|
115
|
+
|
|
116
|
+
- `skill-stocktake` — audits skill *quality*; config-gc audits skill *existence*. Run stocktake on what survives GC.
|
|
117
|
+
- `workspace-surface-audit` — the additive counterpart: recommends what to install. config-gc is the subtractive half of the same lifecycle.
|
|
118
|
+
- `configure-ecc` — after installing skills with it, run config-gc to reconcile overlaps with your pre-existing setup.
|
|
119
|
+
- `continuous-learning` — produces the memory files this skill later audits.
|
|
120
|
+
- `security-review` — pairs well with the permissions channel.
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: configure-ecc
|
|
3
|
+
description: Guide ECC installation, update, or reconfiguration from inside Claude Code, Codex, or Kimi while respecting each harness's real plugin, scope, and hook capabilities.
|
|
4
|
+
metadata:
|
|
5
|
+
origin: ECC
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Configure Everything Claude Code
|
|
9
|
+
|
|
10
|
+
Run a conversational wizard inside the current harness. Inventory first, collect
|
|
11
|
+
only supported choices, preview, confirm once, apply non-interactively, verify,
|
|
12
|
+
and show the welcome only after success. Never clone ECC into a temporary
|
|
13
|
+
directory or copy plugin components by hand.
|
|
14
|
+
|
|
15
|
+
For a human-operated terminal, the canonical entry points are `ecc setup` and
|
|
16
|
+
`npx ecc-universal setup`. Inside a harness, use the explicit non-interactive
|
|
17
|
+
commands below instead.
|
|
18
|
+
|
|
19
|
+
## Route by the current harness
|
|
20
|
+
|
|
21
|
+
- In Claude Code, use the full scope-and-hook wizard below.
|
|
22
|
+
- In Codex, use Codex's native plugin lifecycle. Do not offer Claude scopes or
|
|
23
|
+
map ECC's four Claude hook profiles onto Codex.
|
|
24
|
+
- In Kimi, install the project surface under `./.kimi-code`. Kimi does not
|
|
25
|
+
provide ECC's Claude lifecycle-hook profiles.
|
|
26
|
+
- If the harness is uncertain, state the detected evidence and ask which
|
|
27
|
+
harness to configure before running a mutating command.
|
|
28
|
+
|
|
29
|
+
This skill is a post-install reconfiguration path. It cannot intercept or
|
|
30
|
+
replace a provider's built-in first-install UI.
|
|
31
|
+
|
|
32
|
+
## Claude Code: run the full conversational wizard
|
|
33
|
+
|
|
34
|
+
### 1. Inventory without changing anything
|
|
35
|
+
|
|
36
|
+
Run both commands and summarize the installed ECC scope, enabled state, and
|
|
37
|
+
marketplace source:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
claude plugin list --json
|
|
41
|
+
claude plugin marketplace list --json
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Treat a single existing `ecc@ecc` installation as a reconfiguration. Do not
|
|
45
|
+
interpret Claude's provider-owned "Open home page" control as installation
|
|
46
|
+
evidence. Stop and report the recovery returned by setup for multiple ECC
|
|
47
|
+
scopes, a legacy/manual install, malformed settings, or a marketplace collision;
|
|
48
|
+
never guess which state to delete.
|
|
49
|
+
|
|
50
|
+
### 2. Collect exactly two choices
|
|
51
|
+
|
|
52
|
+
Ask exactly one scope question and require one value:
|
|
53
|
+
|
|
54
|
+
- `user | project | local`
|
|
55
|
+
- `user` is global for this user.
|
|
56
|
+
- `project` is shared through repository settings.
|
|
57
|
+
- `local` is private to the current project.
|
|
58
|
+
|
|
59
|
+
Visually mark only the selected scope as selected or installing. If the user
|
|
60
|
+
chooses a different scope from a single existing install, describe it as a
|
|
61
|
+
scope migration and include `--move-scope` in the commands below.
|
|
62
|
+
|
|
63
|
+
Ask exactly one hook-mode question and require one value:
|
|
64
|
+
|
|
65
|
+
- `off | minimal | standard | strict`
|
|
66
|
+
- `off` keeps skills and commands but disables ECC hook automation.
|
|
67
|
+
- `minimal` enables the lightest lifecycle and safety automation.
|
|
68
|
+
- `standard` balances quality and safety automation.
|
|
69
|
+
- `strict` enables the strongest checks and reminders.
|
|
70
|
+
|
|
71
|
+
Hook preference is personal Claude plugin configuration; it does not follow
|
|
72
|
+
the selected install scope.
|
|
73
|
+
|
|
74
|
+
### 3. Preview and confirm once
|
|
75
|
+
|
|
76
|
+
Prefer the plugin-bundled setup script. Substitute the two selected values and
|
|
77
|
+
include `--move-scope` only for a scope migration:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
node "$CLAUDE_PLUGIN_ROOT/scripts/setup.js" --mode claude-plugin \
|
|
81
|
+
--scope <scope> --hooks <hooks> [--move-scope] --dry-run --json
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
If `$CLAUDE_PLUGIN_ROOT` is unavailable, use the published npm package:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
npx --yes --package ecc-universal ecc setup --mode claude-plugin \
|
|
88
|
+
--scope <scope> --hooks <hooks> [--move-scope] --dry-run --json
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Show exactly one confirmation summary containing the planned action, one scope,
|
|
92
|
+
one hook mode, marketplace action, and any source-to-destination migration.
|
|
93
|
+
Ask one yes/no question. Do not run a bare interactive `ecc setup` through a
|
|
94
|
+
harness shell tool because that shell is commonly non-TTY.
|
|
95
|
+
|
|
96
|
+
### 4. Apply the explicit choices
|
|
97
|
+
|
|
98
|
+
After confirmation, rerun the same route without `--dry-run`. Keep every choice
|
|
99
|
+
explicit and request JSON so success can be checked deterministically:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
node "$CLAUDE_PLUGIN_ROOT/scripts/setup.js" --mode claude-plugin \
|
|
103
|
+
--scope <scope> --hooks <hooks> [--move-scope] --yes --json
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Fallback:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
npx --yes --package ecc-universal ecc setup --mode claude-plugin \
|
|
110
|
+
--scope <scope> --hooks <hooks> [--move-scope] --yes --json
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 5. Verify, then render the welcome
|
|
114
|
+
|
|
115
|
+
Require a zero exit status and a setup result whose `scope` and `hooks` equal
|
|
116
|
+
the selected values. Then independently run:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
claude plugin list --json
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Continue only when exactly one enabled `ecc@ecc` entry exists at the selected
|
|
123
|
+
scope. When `$CLAUDE_PLUGIN_ROOT` is available, pass the successful setup
|
|
124
|
+
`action` (`installed`, `updated`, `migrated`, `resumed`, or
|
|
125
|
+
`already-migrated`) to the bundled renderer:
|
|
126
|
+
|
|
127
|
+
Before invoking it, require the provider-reported version to match
|
|
128
|
+
`ECC_VERSION_PATTERN` from `scripts/lib/terminal-welcome.js`. Reject unexpected
|
|
129
|
+
version text instead of interpolating it into a shell command.
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
node -e 'const { renderTerminalWelcome } = require(process.env.CLAUDE_PLUGIN_ROOT + "/scripts/lib/terminal-welcome"); process.stdout.write(renderTerminalWelcome({ action: process.argv[1], version: process.argv[2], color: process.stdout.isTTY }));' "<action>" "<installed-version>"
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Render the welcome exactly once. On failure, dry-run, cancellation, a scope or
|
|
136
|
+
hook mismatch, or unverifiable state, do not render it; report the error and
|
|
137
|
+
recovery instead. After verified changes, tell the user to run
|
|
138
|
+
`/reload-plugins` or restart Claude Code.
|
|
139
|
+
|
|
140
|
+
## Codex: use the native plugin lifecycle
|
|
141
|
+
|
|
142
|
+
Inventory with `codex plugin marketplace list --json` and
|
|
143
|
+
`codex plugin list --available --json`. Codex's native plugin command has no
|
|
144
|
+
Claude-style `user | project | local` selector. Codex native plugins do support
|
|
145
|
+
provider-specific hooks, but Codex requires explicit trust for them. Let Codex
|
|
146
|
+
show that trust decision; do not ask the Claude four-profile hook question or
|
|
147
|
+
claim those profiles map to Codex.
|
|
148
|
+
|
|
149
|
+
If the ECC marketplace is missing, add it. Otherwise refresh its snapshot:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
codex plugin marketplace add affaan-m/ECC
|
|
153
|
+
codex plugin marketplace upgrade ecc --json
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Ask for one confirmation, then install or idempotently refresh the installed
|
|
157
|
+
cache and verify it:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
codex plugin add ecc@ecc --json
|
|
161
|
+
codex plugin list --json
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Continue only when the JSON reports ECC installed and provides its
|
|
165
|
+
`installedPath`. Then render the verified bundle's welcome:
|
|
166
|
+
|
|
167
|
+
Use only the exact absolute `installedPath` returned by Codex JSON. Reject
|
|
168
|
+
control characters and require the installed version to match
|
|
169
|
+
`ECC_VERSION_PATTERN`. Invoke `node` directly with this argument array; this is
|
|
170
|
+
a tool API invocation, not a shell command:
|
|
171
|
+
|
|
172
|
+
```text
|
|
173
|
+
["<installedPath>/scripts/welcome.js", "--action", "configured", "--version", "<installed-version>"]
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
If the current harness cannot invoke an executable with a separate argument
|
|
177
|
+
array, skip the welcome. Never construct a shell command from Codex JSON values.
|
|
178
|
+
|
|
179
|
+
Never claim that Claude's `off | minimal | standard | strict` profiles were
|
|
180
|
+
applied to Codex.
|
|
181
|
+
|
|
182
|
+
## Kimi: install the project surface
|
|
183
|
+
|
|
184
|
+
State the capability summary before confirmation: destination
|
|
185
|
+
`./.kimi-code`; `hooks=unsupported` for ECC lifecycle hooks. Do not ask the
|
|
186
|
+
Claude scope or hook-mode questions. Preview first:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
npx --yes --package ecc-universal ecc install --profile core --target kimi --dry-run
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Show one confirmation for that project destination, then apply the identical
|
|
193
|
+
command without `--dry-run`. Verify with:
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
npx --yes --package ecc-universal ecc doctor --target kimi
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Only after doctor succeeds and the installed instructions and skills remain
|
|
200
|
+
inside `./.kimi-code`, render:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
npx --yes --package ecc-universal ecc welcome --action configured
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Do not claim that Kimi installed or configured ECC lifecycle hooks.
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: connections-optimizer
|
|
3
|
+
description: Reorganize the user's X and LinkedIn network with review-first pruning, add/follow recommendations, and channel-specific warm outreach drafted in the user's real voice. Use when the user wants to clean up following lists, grow toward current priorities, or rebalance a social graph around higher-signal relationships.
|
|
4
|
+
metadata:
|
|
5
|
+
origin: ECC
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Connections Optimizer
|
|
9
|
+
|
|
10
|
+
Reorganize the user's network instead of treating outbound as a one-way prospecting list.
|
|
11
|
+
|
|
12
|
+
This skill handles:
|
|
13
|
+
|
|
14
|
+
- X following cleanup and expansion
|
|
15
|
+
- LinkedIn follow and connection analysis
|
|
16
|
+
- review-first prune queues
|
|
17
|
+
- add and follow recommendations
|
|
18
|
+
- warm-path identification
|
|
19
|
+
- Apple Mail, X DM, and LinkedIn draft generation in the user's real voice
|
|
20
|
+
|
|
21
|
+
## When to Activate
|
|
22
|
+
|
|
23
|
+
- the user wants to prune their X following
|
|
24
|
+
- the user wants to rebalance who they follow or stay connected to
|
|
25
|
+
- the user says "clean up my network", "who should I unfollow", "who should I follow", "who should I reconnect with"
|
|
26
|
+
- outreach quality depends on network structure, not just cold list generation
|
|
27
|
+
|
|
28
|
+
## Required Inputs
|
|
29
|
+
|
|
30
|
+
Collect or infer:
|
|
31
|
+
|
|
32
|
+
- current priorities and active work
|
|
33
|
+
- target roles, industries, geos, or ecosystems
|
|
34
|
+
- platform selection: X, LinkedIn, or both
|
|
35
|
+
- do-not-touch list
|
|
36
|
+
- mode: `light-pass`, `default`, or `aggressive`
|
|
37
|
+
|
|
38
|
+
If the user does not specify a mode, use `default`.
|
|
39
|
+
|
|
40
|
+
## Tool Requirements
|
|
41
|
+
|
|
42
|
+
### Preferred
|
|
43
|
+
|
|
44
|
+
- `x-api` for X graph inspection and recent activity
|
|
45
|
+
- `lead-intelligence` for target discovery and warm-path ranking
|
|
46
|
+
- `social-graph-ranker` when the user wants bridge value scored independently of the broader lead workflow
|
|
47
|
+
- Exa / deep research for person and company enrichment
|
|
48
|
+
- `brand-voice` before drafting outbound
|
|
49
|
+
|
|
50
|
+
### Fallbacks
|
|
51
|
+
|
|
52
|
+
- browser control for LinkedIn analysis and drafting
|
|
53
|
+
- browser control for X if API coverage is constrained
|
|
54
|
+
- Apple Mail or Mail.app drafting via desktop automation when email is the right channel
|
|
55
|
+
|
|
56
|
+
## Safety Defaults
|
|
57
|
+
|
|
58
|
+
- default is review-first, never blind auto-pruning
|
|
59
|
+
- X: prune only accounts the user follows, never followers
|
|
60
|
+
- LinkedIn: treat 1st-degree connection removal as manual-review-first
|
|
61
|
+
- do not auto-send DMs, invites, or emails
|
|
62
|
+
- emit a ranked action plan and drafts before any apply step
|
|
63
|
+
|
|
64
|
+
## Platform Rules
|
|
65
|
+
|
|
66
|
+
### X
|
|
67
|
+
|
|
68
|
+
- mutuals are stickier than one-way follows
|
|
69
|
+
- non-follow-backs can be pruned more aggressively
|
|
70
|
+
- heavily inactive or disappeared accounts should surface quickly
|
|
71
|
+
- engagement, signal quality, and bridge value matter more than raw follower count
|
|
72
|
+
|
|
73
|
+
### LinkedIn
|
|
74
|
+
|
|
75
|
+
- API-first if the user actually has LinkedIn API access
|
|
76
|
+
- browser workflow must work when API access is missing
|
|
77
|
+
- distinguish outbound follows from accepted 1st-degree connections
|
|
78
|
+
- outbound follows can be pruned more freely
|
|
79
|
+
- accepted 1st-degree connections should default to review, not auto-remove
|
|
80
|
+
|
|
81
|
+
## Modes
|
|
82
|
+
|
|
83
|
+
### `light-pass`
|
|
84
|
+
|
|
85
|
+
- prune only high-confidence low-value one-way follows
|
|
86
|
+
- surface the rest for review
|
|
87
|
+
- generate a small add/follow list
|
|
88
|
+
|
|
89
|
+
### `default`
|
|
90
|
+
|
|
91
|
+
- balanced prune queue
|
|
92
|
+
- balanced keep list
|
|
93
|
+
- ranked add/follow queue
|
|
94
|
+
- draft warm intros or direct outreach where useful
|
|
95
|
+
|
|
96
|
+
### `aggressive`
|
|
97
|
+
|
|
98
|
+
- larger prune queue
|
|
99
|
+
- lower tolerance for stale non-follow-backs
|
|
100
|
+
- still review-gated before apply
|
|
101
|
+
|
|
102
|
+
## Scoring Model
|
|
103
|
+
|
|
104
|
+
Use these positive signals:
|
|
105
|
+
|
|
106
|
+
- reciprocity
|
|
107
|
+
- recent activity
|
|
108
|
+
- alignment to current priorities
|
|
109
|
+
- network bridge value
|
|
110
|
+
- role relevance
|
|
111
|
+
- real engagement history
|
|
112
|
+
- recent presence and responsiveness
|
|
113
|
+
|
|
114
|
+
Use these negative signals:
|
|
115
|
+
|
|
116
|
+
- disappeared or abandoned account
|
|
117
|
+
- stale one-way follow
|
|
118
|
+
- off-priority topic cluster
|
|
119
|
+
- low-value noise
|
|
120
|
+
- repeated non-response
|
|
121
|
+
- no follow-back when many better replacements exist
|
|
122
|
+
|
|
123
|
+
Mutuals and real warm-path bridges should be penalized less aggressively than one-way follows.
|
|
124
|
+
|
|
125
|
+
## Workflow
|
|
126
|
+
|
|
127
|
+
1. Capture priorities, do-not-touch constraints, and selected platforms.
|
|
128
|
+
2. Pull the current following / connection inventory.
|
|
129
|
+
3. Score prune candidates with explicit reasons.
|
|
130
|
+
4. Score keep candidates with explicit reasons.
|
|
131
|
+
5. Use `lead-intelligence` plus research surfaces to rank expansion candidates.
|
|
132
|
+
6. Match the right channel:
|
|
133
|
+
- X DM for warm, fast social touch points
|
|
134
|
+
- LinkedIn message for professional graph adjacency
|
|
135
|
+
- Apple Mail draft for higher-context intros or outreach
|
|
136
|
+
7. Run `brand-voice` before drafting messages.
|
|
137
|
+
8. Return a review pack before any apply step.
|
|
138
|
+
|
|
139
|
+
## Review Pack Format
|
|
140
|
+
|
|
141
|
+
```text
|
|
142
|
+
CONNECTIONS OPTIMIZER REPORT
|
|
143
|
+
============================
|
|
144
|
+
|
|
145
|
+
Mode:
|
|
146
|
+
Platforms:
|
|
147
|
+
Priority Set:
|
|
148
|
+
|
|
149
|
+
Prune Queue
|
|
150
|
+
- handle / profile
|
|
151
|
+
reason:
|
|
152
|
+
confidence:
|
|
153
|
+
action:
|
|
154
|
+
|
|
155
|
+
Review Queue
|
|
156
|
+
- handle / profile
|
|
157
|
+
reason:
|
|
158
|
+
risk:
|
|
159
|
+
|
|
160
|
+
Keep / Protect
|
|
161
|
+
- handle / profile
|
|
162
|
+
bridge value:
|
|
163
|
+
|
|
164
|
+
Add / Follow Targets
|
|
165
|
+
- person
|
|
166
|
+
why now:
|
|
167
|
+
warm path:
|
|
168
|
+
preferred channel:
|
|
169
|
+
|
|
170
|
+
Drafts
|
|
171
|
+
- X DM:
|
|
172
|
+
- LinkedIn:
|
|
173
|
+
- Apple Mail:
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Outbound Rules
|
|
177
|
+
|
|
178
|
+
- Default email path is Apple Mail / Mail.app draft creation.
|
|
179
|
+
- Do not send automatically.
|
|
180
|
+
- Choose the channel based on warmth, relevance, and context depth.
|
|
181
|
+
- Do not force a DM when an email or no outreach is the right move.
|
|
182
|
+
- Drafts should sound like the user, not like automated sales copy.
|
|
183
|
+
|
|
184
|
+
## Related Skills
|
|
185
|
+
|
|
186
|
+
- `brand-voice` for the reusable voice profile
|
|
187
|
+
- `social-graph-ranker` for the standalone bridge-scoring and warm-path math
|
|
188
|
+
- `lead-intelligence` for weighted target and warm-path discovery
|
|
189
|
+
- `x-api` for X graph access, drafting, and optional apply flows
|
|
190
|
+
- `content-engine` when the user also wants public launch content around network moves
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-engine
|
|
3
|
+
description: Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.
|
|
4
|
+
metadata:
|
|
5
|
+
origin: ECC
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Content Engine
|
|
9
|
+
|
|
10
|
+
Build platform-native content without flattening the author's real voice into platform slop.
|
|
11
|
+
|
|
12
|
+
## When to Activate
|
|
13
|
+
|
|
14
|
+
- writing X posts or threads
|
|
15
|
+
- drafting LinkedIn posts or launch updates
|
|
16
|
+
- scripting short-form video or YouTube explainers
|
|
17
|
+
- repurposing articles, podcasts, demos, docs, or internal notes into public content
|
|
18
|
+
- building a launch sequence or ongoing content system around a product, insight, or narrative
|
|
19
|
+
|
|
20
|
+
## Non-Negotiables
|
|
21
|
+
|
|
22
|
+
1. Start from source material, not generic post formulas.
|
|
23
|
+
2. Adapt the format for the platform, not the persona.
|
|
24
|
+
3. One post should carry one actual claim.
|
|
25
|
+
4. Specificity beats adjectives.
|
|
26
|
+
5. No engagement bait unless the user explicitly asks for it.
|
|
27
|
+
|
|
28
|
+
## Source-First Workflow
|
|
29
|
+
|
|
30
|
+
Before drafting, identify the source set:
|
|
31
|
+
- published articles
|
|
32
|
+
- notes or internal memos
|
|
33
|
+
- product demos
|
|
34
|
+
- docs or changelogs
|
|
35
|
+
- transcripts
|
|
36
|
+
- screenshots
|
|
37
|
+
- prior posts from the same author
|
|
38
|
+
|
|
39
|
+
If the user wants a specific voice, build a voice profile from real examples before writing.
|
|
40
|
+
Use `brand-voice` as the canonical workflow when voice consistency matters across more than one output.
|
|
41
|
+
|
|
42
|
+
## Voice Handling
|
|
43
|
+
|
|
44
|
+
`brand-voice` is the canonical voice layer.
|
|
45
|
+
|
|
46
|
+
Run it first when:
|
|
47
|
+
|
|
48
|
+
- there are multiple downstream outputs
|
|
49
|
+
- the user explicitly cares about writing style
|
|
50
|
+
- the content is launch, outreach, or reputation-sensitive
|
|
51
|
+
|
|
52
|
+
Reuse the resulting `VOICE PROFILE` here instead of rebuilding a second voice model.
|
|
53
|
+
If the user wants Affaan / ECC voice specifically, still treat `brand-voice` as the source of truth and feed it the best live or source-derived material available.
|
|
54
|
+
|
|
55
|
+
## Hard Bans
|
|
56
|
+
|
|
57
|
+
Delete and rewrite any of these:
|
|
58
|
+
- "In today's rapidly evolving landscape"
|
|
59
|
+
- "game-changer", "revolutionary", "cutting-edge"
|
|
60
|
+
- "here's why this matters" unless it is followed immediately by something concrete
|
|
61
|
+
- ending with a LinkedIn-style question just to farm replies
|
|
62
|
+
- forced casualness on LinkedIn
|
|
63
|
+
- fake engagement padding that was not present in the source material
|
|
64
|
+
|
|
65
|
+
## Platform Adaptation Rules
|
|
66
|
+
|
|
67
|
+
### X
|
|
68
|
+
|
|
69
|
+
- open with the strongest claim, artifact, or tension
|
|
70
|
+
- keep the compression if the source voice is compressed
|
|
71
|
+
- if writing a thread, each post must advance the argument
|
|
72
|
+
- do not pad with context the audience does not need
|
|
73
|
+
|
|
74
|
+
### LinkedIn
|
|
75
|
+
|
|
76
|
+
- expand only enough for people outside the immediate niche to follow
|
|
77
|
+
- do not turn it into a fake lesson post unless the source material actually is reflective
|
|
78
|
+
- no corporate inspiration cadence
|
|
79
|
+
- no praise-stacking, no "journey" filler
|
|
80
|
+
|
|
81
|
+
### Short Video
|
|
82
|
+
|
|
83
|
+
- script around the visual sequence and proof points
|
|
84
|
+
- first seconds should show the result, problem, or punch
|
|
85
|
+
- do not write narration that sounds better on paper than on screen
|
|
86
|
+
|
|
87
|
+
### YouTube
|
|
88
|
+
|
|
89
|
+
- show the result or tension early
|
|
90
|
+
- organize by argument or progression, not filler sections
|
|
91
|
+
- use chaptering only when it helps clarity
|
|
92
|
+
|
|
93
|
+
### Newsletter
|
|
94
|
+
|
|
95
|
+
- open with the point, conflict, or artifact
|
|
96
|
+
- do not spend the first paragraph warming up
|
|
97
|
+
- every section needs to add something new
|
|
98
|
+
|
|
99
|
+
## Repurposing Flow
|
|
100
|
+
|
|
101
|
+
1. Pick the anchor asset.
|
|
102
|
+
2. Extract 3 to 7 atomic claims or scenes.
|
|
103
|
+
3. Rank them by sharpness, novelty, and proof.
|
|
104
|
+
4. Assign one strong idea per output.
|
|
105
|
+
5. Adapt structure for each platform.
|
|
106
|
+
6. Strip platform-shaped filler.
|
|
107
|
+
7. Run the quality gate.
|
|
108
|
+
|
|
109
|
+
## Deliverables
|
|
110
|
+
|
|
111
|
+
When asked for a campaign, return:
|
|
112
|
+
- a short voice profile if voice matching matters
|
|
113
|
+
- the core angle
|
|
114
|
+
- platform-native drafts
|
|
115
|
+
- posting order only if it helps execution
|
|
116
|
+
- gaps that must be filled before publishing
|
|
117
|
+
|
|
118
|
+
## Quality Gate
|
|
119
|
+
|
|
120
|
+
Before delivering:
|
|
121
|
+
- every draft sounds like the intended author, not the platform stereotype
|
|
122
|
+
- every draft contains a real claim, proof point, or concrete observation
|
|
123
|
+
- no generic hype language remains
|
|
124
|
+
- no fake engagement bait remains
|
|
125
|
+
- no duplicated copy across platforms unless requested
|
|
126
|
+
- any CTA is earned and user-approved
|
|
127
|
+
|
|
128
|
+
## Related Skills
|
|
129
|
+
|
|
130
|
+
- `brand-voice` for source-derived voice profiles
|
|
131
|
+
- `crosspost` for platform-specific distribution
|
|
132
|
+
- `x-api` for sourcing recent posts and publishing approved X output
|