myaidev-method 0.3.2 → 0.3.4
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 +52 -48
- package/DEV_WORKFLOW_GUIDE.md +6 -6
- package/MCP_INTEGRATION.md +4 -4
- package/README.md +81 -64
- package/TECHNICAL_ARCHITECTURE.md +112 -18
- package/USER_GUIDE.md +57 -40
- package/bin/cli.js +49 -127
- package/dist/mcp/gutenberg-converter.js +667 -413
- package/dist/mcp/wordpress-server.js +1558 -1181
- package/extension.json +3 -3
- package/package.json +2 -1
- package/skills/content-writer/SKILL.md +130 -178
- package/skills/infographic/SKILL.md +191 -0
- package/skills/myaidev-analyze/SKILL.md +242 -0
- package/skills/myaidev-analyze/agents/dependency-mapper-agent.md +236 -0
- package/skills/myaidev-analyze/agents/pattern-detector-agent.md +240 -0
- package/skills/myaidev-analyze/agents/structure-scanner-agent.md +171 -0
- package/skills/myaidev-analyze/agents/tech-profiler-agent.md +291 -0
- package/skills/myaidev-architect/SKILL.md +389 -0
- package/skills/myaidev-architect/agents/compliance-checker-agent.md +287 -0
- package/skills/myaidev-architect/agents/requirements-analyst-agent.md +194 -0
- package/skills/myaidev-architect/agents/system-designer-agent.md +315 -0
- package/skills/myaidev-coder/SKILL.md +291 -0
- package/skills/myaidev-coder/agents/implementer-agent.md +185 -0
- package/skills/myaidev-coder/agents/integration-agent.md +168 -0
- package/skills/myaidev-coder/agents/pattern-scanner-agent.md +161 -0
- package/skills/myaidev-coder/agents/self-reviewer-agent.md +168 -0
- package/skills/myaidev-debug/SKILL.md +308 -0
- package/skills/myaidev-debug/agents/fix-agent-debug.md +317 -0
- package/skills/myaidev-debug/agents/hypothesis-agent.md +226 -0
- package/skills/myaidev-debug/agents/investigator-agent.md +250 -0
- package/skills/myaidev-debug/agents/symptom-collector-agent.md +231 -0
- package/skills/myaidev-documenter/SKILL.md +194 -0
- package/skills/myaidev-documenter/agents/code-reader-agent.md +172 -0
- package/skills/myaidev-documenter/agents/doc-validator-agent.md +174 -0
- package/skills/myaidev-documenter/agents/doc-writer-agent.md +379 -0
- package/skills/myaidev-migrate/SKILL.md +300 -0
- package/skills/myaidev-migrate/agents/migration-planner-agent.md +237 -0
- package/skills/myaidev-migrate/agents/migration-writer-agent.md +248 -0
- package/skills/myaidev-migrate/agents/schema-analyzer-agent.md +190 -0
- package/skills/myaidev-performance/SKILL.md +270 -0
- package/skills/myaidev-performance/agents/benchmark-agent.md +281 -0
- package/skills/myaidev-performance/agents/optimizer-agent.md +277 -0
- package/skills/myaidev-performance/agents/profiler-agent.md +252 -0
- package/skills/myaidev-refactor/SKILL.md +296 -0
- package/skills/myaidev-refactor/agents/refactor-executor-agent.md +221 -0
- package/skills/myaidev-refactor/agents/refactor-planner-agent.md +213 -0
- package/skills/myaidev-refactor/agents/regression-guard-agent.md +242 -0
- package/skills/myaidev-refactor/agents/smell-detector-agent.md +233 -0
- package/skills/myaidev-reviewer/SKILL.md +385 -0
- package/skills/myaidev-reviewer/agents/auto-fixer-agent.md +238 -0
- package/skills/myaidev-reviewer/agents/code-analyst-agent.md +220 -0
- package/skills/myaidev-reviewer/agents/security-scanner-agent.md +262 -0
- package/skills/myaidev-tester/SKILL.md +331 -0
- package/skills/myaidev-tester/agents/coverage-analyst-agent.md +163 -0
- package/skills/myaidev-tester/agents/tdd-driver-agent.md +242 -0
- package/skills/myaidev-tester/agents/test-runner-agent.md +176 -0
- package/skills/myaidev-tester/agents/test-strategist-agent.md +154 -0
- package/skills/myaidev-tester/agents/test-writer-agent.md +242 -0
- package/skills/myaidev-workflow/SKILL.md +567 -0
- package/skills/myaidev-workflow/agents/analyzer-agent.md +317 -0
- package/skills/myaidev-workflow/agents/coordinator-agent.md +253 -0
- package/skills/security-auditor/SKILL.md +1 -1
- package/skills/skill-builder/SKILL.md +417 -0
- package/src/cli/commands/addon.js +146 -135
- package/src/cli/commands/auth.js +9 -1
- package/src/config/workflows.js +11 -6
- package/src/lib/ascii-banner.js +3 -3
- package/src/lib/update-manager.js +120 -61
- package/src/mcp/gutenberg-converter.js +667 -413
- package/src/mcp/wordpress-server.js +1558 -1181
- package/src/statusline/statusline.sh +279 -0
- package/src/templates/claude/CLAUDE.md +124 -0
- package/skills/sparc-architect/SKILL.md +0 -127
- package/skills/sparc-coder/SKILL.md +0 -90
- package/skills/sparc-documenter/SKILL.md +0 -155
- package/skills/sparc-reviewer/SKILL.md +0 -138
- package/skills/sparc-tester/SKILL.md +0 -100
- package/skills/sparc-workflow/SKILL.md +0 -130
- /package/{marketplace.json → .claude-plugin/marketplace.json} +0 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# MyAIDev Method - Claude Code Status Line
|
|
3
|
+
# Displays branded project status in the Claude Code footer.
|
|
4
|
+
# Called by Claude Code with JSON context on stdin.
|
|
5
|
+
|
|
6
|
+
# ── Read Claude Code JSON input ──────────────────────────────────────────────
|
|
7
|
+
INPUT=$(cat 2>/dev/null || echo "{}")
|
|
8
|
+
|
|
9
|
+
# ── Parse fields from stdin JSON ─────────────────────────────────────────────
|
|
10
|
+
# NOTE: context_window.used_percentage is unreliable in status line hooks.
|
|
11
|
+
# Instead, read individual token counts from current_usage and calculate manually.
|
|
12
|
+
# See: github.com/anthropics/claude-code/issues/13783
|
|
13
|
+
CONTEXT_BASELINE=22600 # system prompt, tools, MCP tokens not visible to hooks
|
|
14
|
+
|
|
15
|
+
if command -v jq >/dev/null 2>&1; then
|
|
16
|
+
eval "$(echo "$INPUT" | jq -r '
|
|
17
|
+
"MODEL=" + (.model.display_name // "" | @sh) + "\n" +
|
|
18
|
+
"CWD=" + (.cwd // .workspace.current_dir // "" | @sh) + "\n" +
|
|
19
|
+
"CONTEXT_MAX=" + ((.context_window.context_window_size // 200000) | tostring)
|
|
20
|
+
' 2>/dev/null)"
|
|
21
|
+
else
|
|
22
|
+
MODEL=""
|
|
23
|
+
CWD=""
|
|
24
|
+
CONTEXT_MAX=200000
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
# Calculate context usage from baseline estimate (approximate)
|
|
28
|
+
CONTEXT_USED=$CONTEXT_BASELINE
|
|
29
|
+
|
|
30
|
+
if [ "$CONTEXT_MAX" -gt 0 ] && [ "$CONTEXT_USED" -gt 0 ]; then
|
|
31
|
+
CTX_PCT=$((CONTEXT_USED * 100 / CONTEXT_MAX))
|
|
32
|
+
else
|
|
33
|
+
CTX_PCT=0
|
|
34
|
+
fi
|
|
35
|
+
[ "$CTX_PCT" -gt 100 ] && CTX_PCT=100
|
|
36
|
+
|
|
37
|
+
# ── ccusage: fetch real token/cost data with caching ─────────────────────────
|
|
38
|
+
CCUSAGE_CACHE="/tmp/.myaidev_ccusage_cache"
|
|
39
|
+
CCUSAGE_LOCK="/tmp/.myaidev_ccusage.lock"
|
|
40
|
+
CCUSAGE_TTL=30 # seconds
|
|
41
|
+
|
|
42
|
+
CCUSAGE_TOKENS=""
|
|
43
|
+
CCUSAGE_COST=""
|
|
44
|
+
|
|
45
|
+
# Load cached data first (if it exists)
|
|
46
|
+
if [ -f "$CCUSAGE_CACHE" ]; then
|
|
47
|
+
source "$CCUSAGE_CACHE"
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
# Check if cache needs updating
|
|
51
|
+
ccusage_needs_update=false
|
|
52
|
+
if [ ! -f "$CCUSAGE_CACHE" ] || [ -z "$CCUSAGE_TOKENS" ]; then
|
|
53
|
+
ccusage_needs_update=true
|
|
54
|
+
elif [ -f "$CCUSAGE_CACHE" ]; then
|
|
55
|
+
cache_mtime=$(stat -c%Y "$CCUSAGE_CACHE" 2>/dev/null || stat -f%m "$CCUSAGE_CACHE" 2>/dev/null || echo 0)
|
|
56
|
+
cache_age=$(( $(date +%s) - cache_mtime ))
|
|
57
|
+
if [ "$cache_age" -ge "$CCUSAGE_TTL" ]; then
|
|
58
|
+
ccusage_needs_update=true
|
|
59
|
+
fi
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
if [ "$ccusage_needs_update" = true ]; then
|
|
63
|
+
# Try to acquire lock (non-blocking, using mkdir for atomicity)
|
|
64
|
+
if mkdir "$CCUSAGE_LOCK" 2>/dev/null; then
|
|
65
|
+
# Run ccusage with timeout, try npx first then bunx
|
|
66
|
+
ccusage_output=""
|
|
67
|
+
if command -v timeout >/dev/null 2>&1; then
|
|
68
|
+
ccusage_output=$(timeout 5 npx ccusage 2>/dev/null | sed 's/\x1b\[[0-9;]*m//g' | grep "│ Total" | head -1)
|
|
69
|
+
if [ -z "$ccusage_output" ] && command -v bunx >/dev/null 2>&1; then
|
|
70
|
+
ccusage_output=$(timeout 5 bunx ccusage 2>/dev/null | sed 's/\x1b\[[0-9;]*m//g' | grep "│ Total" | head -1)
|
|
71
|
+
fi
|
|
72
|
+
elif command -v bunx >/dev/null 2>&1; then
|
|
73
|
+
ccusage_output=$(bunx ccusage 2>/dev/null | sed 's/\x1b\[[0-9;]*m//g' | grep "│ Total" | head -1)
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
if [ -n "$ccusage_output" ]; then
|
|
77
|
+
# Extract input tokens (col 4), output tokens (col 5), cost (col 9)
|
|
78
|
+
cc_input=$(echo "$ccusage_output" | awk -F'│' '{print $4}' | sed 's/[^0-9]//g' | head -c 10)
|
|
79
|
+
cc_output=$(echo "$ccusage_output" | awk -F'│' '{print $5}' | sed 's/[^0-9]//g' | head -c 10)
|
|
80
|
+
cc_cost=$(echo "$ccusage_output" | awk -F'│' '{print $9}' | sed 's/^ *//;s/ *$//')
|
|
81
|
+
|
|
82
|
+
if [ -n "$cc_input" ] && [ -n "$cc_output" ]; then
|
|
83
|
+
cc_total=$((cc_input + cc_output))
|
|
84
|
+
CCUSAGE_TOKENS=$(printf "%'d" "$cc_total" 2>/dev/null || echo "$cc_total")
|
|
85
|
+
CCUSAGE_COST="$cc_cost"
|
|
86
|
+
|
|
87
|
+
# Write to cache
|
|
88
|
+
echo "CCUSAGE_TOKENS=\"$CCUSAGE_TOKENS\"" > "$CCUSAGE_CACHE"
|
|
89
|
+
printf "CCUSAGE_COST=\"%s\"\n" "${CCUSAGE_COST//$/\\$}" >> "$CCUSAGE_CACHE"
|
|
90
|
+
fi
|
|
91
|
+
fi
|
|
92
|
+
|
|
93
|
+
# Release lock
|
|
94
|
+
rmdir "$CCUSAGE_LOCK" 2>/dev/null
|
|
95
|
+
else
|
|
96
|
+
# Lock held by another process — check for stale lock (>30s old)
|
|
97
|
+
if [ -d "$CCUSAGE_LOCK" ]; then
|
|
98
|
+
lock_mtime=$(stat -c%Y "$CCUSAGE_LOCK" 2>/dev/null || stat -f%m "$CCUSAGE_LOCK" 2>/dev/null || echo 0)
|
|
99
|
+
lock_age=$(( $(date +%s) - lock_mtime ))
|
|
100
|
+
if [ "$lock_age" -gt 30 ]; then
|
|
101
|
+
rmdir "$CCUSAGE_LOCK" 2>/dev/null
|
|
102
|
+
fi
|
|
103
|
+
fi
|
|
104
|
+
# Use whatever cached data we loaded above
|
|
105
|
+
fi
|
|
106
|
+
fi
|
|
107
|
+
|
|
108
|
+
# ── Token formatting ─────────────────────────────────────────────────────────
|
|
109
|
+
format_tokens() {
|
|
110
|
+
local t=$1
|
|
111
|
+
# Strip commas for numeric comparison
|
|
112
|
+
local raw=$(echo "$t" | sed 's/,//g')
|
|
113
|
+
if [ "$raw" -ge 1000000 ] 2>/dev/null; then
|
|
114
|
+
printf "%.1fM" "$(echo "$raw / 1000000" | bc -l 2>/dev/null || echo "0")"
|
|
115
|
+
elif [ "$raw" -ge 1000 ] 2>/dev/null; then
|
|
116
|
+
printf "%.1fK" "$(echo "$raw / 1000" | bc -l 2>/dev/null || echo "0")"
|
|
117
|
+
else
|
|
118
|
+
printf "%s" "$t"
|
|
119
|
+
fi
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
# Format display values from ccusage data
|
|
123
|
+
if [ -n "$CCUSAGE_TOKENS" ]; then
|
|
124
|
+
TOTAL_TOKENS_FMT=$(format_tokens "$CCUSAGE_TOKENS")
|
|
125
|
+
else
|
|
126
|
+
TOTAL_TOKENS_FMT="N/A"
|
|
127
|
+
fi
|
|
128
|
+
|
|
129
|
+
if [ -n "$CCUSAGE_COST" ]; then
|
|
130
|
+
COST_FMT="$CCUSAGE_COST"
|
|
131
|
+
else
|
|
132
|
+
COST_FMT="N/A"
|
|
133
|
+
fi
|
|
134
|
+
|
|
135
|
+
# ── Local data sources ───────────────────────────────────────────────────────
|
|
136
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
137
|
+
|
|
138
|
+
# MyAIDev version from install marker
|
|
139
|
+
VERSION=$(cat "$SCRIPT_DIR/.myaidev-version" 2>/dev/null || echo "?")
|
|
140
|
+
|
|
141
|
+
# Git branch
|
|
142
|
+
GIT_BRANCH=""
|
|
143
|
+
if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
|
144
|
+
GIT_BRANCH=$(git branch --show-current 2>/dev/null)
|
|
145
|
+
fi
|
|
146
|
+
|
|
147
|
+
# Installed skill count
|
|
148
|
+
SKILL_COUNT=0
|
|
149
|
+
if [ -d "$SCRIPT_DIR/skills" ]; then
|
|
150
|
+
SKILL_COUNT=$(ls -d "$SCRIPT_DIR/skills"/*/ 2>/dev/null | wc -l | tr -d ' ')
|
|
151
|
+
fi
|
|
152
|
+
|
|
153
|
+
# MCP server count (from settings.json or project .claude/settings.json)
|
|
154
|
+
MCP_TOTAL=0
|
|
155
|
+
MCP_ENABLED=0
|
|
156
|
+
for SETTINGS_FILE in "$SCRIPT_DIR/settings.json" "$SCRIPT_DIR/../.mcp.json" "$HOME/.claude/settings.json"; do
|
|
157
|
+
if [ -f "$SETTINGS_FILE" ] && command -v jq >/dev/null 2>&1; then
|
|
158
|
+
if echo "$SETTINGS_FILE" | grep -q "mcp.json"; then
|
|
159
|
+
# .mcp.json format: top-level "mcpServers" object
|
|
160
|
+
MCP_TOTAL=$(jq '.mcpServers // {} | keys | length' "$SETTINGS_FILE" 2>/dev/null || echo "0")
|
|
161
|
+
MCP_ENABLED="$MCP_TOTAL"
|
|
162
|
+
else
|
|
163
|
+
# settings.json format: "mcpServers" with optional "enabledMcpjsonServers"
|
|
164
|
+
MCP_TOTAL=$(jq '.mcpServers // {} | keys | length' "$SETTINGS_FILE" 2>/dev/null || echo "0")
|
|
165
|
+
HAS_ENABLED=$(jq 'has("enabledMcpjsonServers")' "$SETTINGS_FILE" 2>/dev/null)
|
|
166
|
+
if [ "$HAS_ENABLED" = "true" ]; then
|
|
167
|
+
MCP_ENABLED=$(jq '.enabledMcpjsonServers | length' "$SETTINGS_FILE" 2>/dev/null || echo "0")
|
|
168
|
+
else
|
|
169
|
+
MCP_ENABLED="$MCP_TOTAL"
|
|
170
|
+
fi
|
|
171
|
+
fi
|
|
172
|
+
# Stop searching if we found MCP servers
|
|
173
|
+
[ "$MCP_TOTAL" -gt 0 ] && break
|
|
174
|
+
fi
|
|
175
|
+
done
|
|
176
|
+
|
|
177
|
+
# Abbreviate CWD
|
|
178
|
+
if [ -z "$CWD" ]; then
|
|
179
|
+
CWD="$PWD"
|
|
180
|
+
fi
|
|
181
|
+
SHORT_CWD="${CWD/#$HOME/~}"
|
|
182
|
+
if [ "${#SHORT_CWD}" -gt 35 ]; then
|
|
183
|
+
SHORT_CWD=".../${SHORT_CWD##*/}"
|
|
184
|
+
fi
|
|
185
|
+
|
|
186
|
+
# Shorten model name (e.g., "Claude Opus 4.6" -> "Opus 4.6")
|
|
187
|
+
SHORT_MODEL="${MODEL#Claude }"
|
|
188
|
+
[ -z "$SHORT_MODEL" ] && SHORT_MODEL="..."
|
|
189
|
+
|
|
190
|
+
# ── ANSI Colors ──────────────────────────────────────────────────────────────
|
|
191
|
+
CYAN='\033[0;36m'
|
|
192
|
+
BRIGHT_CYAN='\033[1;36m'
|
|
193
|
+
GREEN='\033[0;32m'
|
|
194
|
+
BRIGHT_GREEN='\033[1;32m'
|
|
195
|
+
YELLOW='\033[0;33m'
|
|
196
|
+
BRIGHT_YELLOW='\033[1;33m'
|
|
197
|
+
RED='\033[0;31m'
|
|
198
|
+
MAGENTA='\033[0;35m'
|
|
199
|
+
DIM='\033[2m'
|
|
200
|
+
BOLD='\033[1m'
|
|
201
|
+
RESET='\033[0m'
|
|
202
|
+
|
|
203
|
+
# MYAI in bright white, DEV in vivid orange
|
|
204
|
+
C_WHITE='\033[1;97m'
|
|
205
|
+
C_ORANGE='\033[1;38;2;255;140;0m'
|
|
206
|
+
|
|
207
|
+
# ── Build context usage bar ──────────────────────────────────────────────────
|
|
208
|
+
BAR_WIDTH=10
|
|
209
|
+
FILLED=$((CTX_PCT * BAR_WIDTH / 100))
|
|
210
|
+
EMPTY=$((BAR_WIDTH - FILLED))
|
|
211
|
+
|
|
212
|
+
if [ "$CTX_PCT" -lt 40 ]; then
|
|
213
|
+
BAR_COLOR="$GREEN"
|
|
214
|
+
elif [ "$CTX_PCT" -lt 70 ]; then
|
|
215
|
+
BAR_COLOR="$YELLOW"
|
|
216
|
+
else
|
|
217
|
+
BAR_COLOR="$RED"
|
|
218
|
+
fi
|
|
219
|
+
|
|
220
|
+
BAR_FILLED=""
|
|
221
|
+
BAR_EMPTY=""
|
|
222
|
+
for ((i = 0; i < FILLED; i++)); do BAR_FILLED="${BAR_FILLED}█"; done
|
|
223
|
+
for ((i = 0; i < EMPTY; i++)); do BAR_EMPTY="${BAR_EMPTY}░"; done
|
|
224
|
+
|
|
225
|
+
# ── MCP status color ────────────────────────────────────────────────────────
|
|
226
|
+
if [ "$MCP_TOTAL" -eq 0 ]; then
|
|
227
|
+
MCP_COLOR="$DIM"
|
|
228
|
+
MCP_DOT="○"
|
|
229
|
+
elif [ "$MCP_ENABLED" -eq "$MCP_TOTAL" ]; then
|
|
230
|
+
MCP_COLOR="$BRIGHT_GREEN"
|
|
231
|
+
MCP_DOT="●"
|
|
232
|
+
elif [ "$MCP_ENABLED" -gt 0 ]; then
|
|
233
|
+
MCP_COLOR="$BRIGHT_YELLOW"
|
|
234
|
+
MCP_DOT="●"
|
|
235
|
+
else
|
|
236
|
+
MCP_COLOR="$RED"
|
|
237
|
+
MCP_DOT="●"
|
|
238
|
+
fi
|
|
239
|
+
|
|
240
|
+
# ── Line 1: Branding, model, branch, CWD, skills, context ───────────────────
|
|
241
|
+
LINE1=""
|
|
242
|
+
|
|
243
|
+
# Branding: MYAIDEV with white-to-orange gradient + version
|
|
244
|
+
LINE1="${C_WHITE}MYAI${C_ORANGE}DEV${RESET} ${DIM}v${VERSION}${RESET}"
|
|
245
|
+
|
|
246
|
+
# Model
|
|
247
|
+
LINE1="${LINE1} ${DIM}│${RESET} 🧠 ${BOLD}${SHORT_MODEL}${RESET}"
|
|
248
|
+
|
|
249
|
+
# Git branch
|
|
250
|
+
if [ -n "$GIT_BRANCH" ]; then
|
|
251
|
+
LINE1="${LINE1} ${DIM}│${RESET} ${CYAN}⎇ ${GIT_BRANCH}${RESET}"
|
|
252
|
+
fi
|
|
253
|
+
|
|
254
|
+
# Working directory
|
|
255
|
+
LINE1="${LINE1} ${DIM}│${RESET} 📁 ${DIM}${SHORT_CWD}${RESET}"
|
|
256
|
+
|
|
257
|
+
# Skill count
|
|
258
|
+
if [ "$SKILL_COUNT" -gt 0 ]; then
|
|
259
|
+
LINE1="${LINE1} ${DIM}│${RESET} ${CYAN}⬡${RESET} ${SKILL_COUNT}"
|
|
260
|
+
fi
|
|
261
|
+
|
|
262
|
+
# Context bar
|
|
263
|
+
LINE1="${LINE1} ${DIM}│${RESET} ${BAR_COLOR}[${BAR_FILLED}${DIM}${BAR_EMPTY}${RESET}${BAR_COLOR}]${RESET} ${CTX_PCT}%"
|
|
264
|
+
|
|
265
|
+
# ── Line 2: MCP, tokens, cost ───────────────────────────────────────────────
|
|
266
|
+
LINE2=" "
|
|
267
|
+
|
|
268
|
+
# MCP servers
|
|
269
|
+
LINE2="${LINE2}${CYAN}MCP${RESET} ${MCP_COLOR}${MCP_DOT}${MCP_ENABLED}/${MCP_TOTAL}${RESET}"
|
|
270
|
+
|
|
271
|
+
# Total tokens
|
|
272
|
+
LINE2="${LINE2} ${DIM}│${RESET} 💎 ${DIM}Total Tokens:${RESET} ${BOLD}${TOTAL_TOKENS_FMT}${RESET}"
|
|
273
|
+
|
|
274
|
+
# Total cost
|
|
275
|
+
LINE2="${LINE2} ${DIM}Total Cost:${RESET} ${MAGENTA}${COST_FMT}${RESET}"
|
|
276
|
+
|
|
277
|
+
# ── Output ───────────────────────────────────────────────────────────────────
|
|
278
|
+
printf "%b\n" "$LINE1"
|
|
279
|
+
printf "%b\n" "$LINE2"
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Claude Code Configuration
|
|
2
|
+
|
|
3
|
+
This project uses the MyAIDev Method — a skills-based AI development framework.
|
|
4
|
+
|
|
5
|
+
## Skills (`.claude/skills/`)
|
|
6
|
+
|
|
7
|
+
Skills are the primary delivery mechanism. Each skill is a self-contained orchestrator with its own subagents.
|
|
8
|
+
|
|
9
|
+
### Development (MyAIDev SPARC Workflow)
|
|
10
|
+
|
|
11
|
+
**Recommended entry point**: `/myaidev-workflow` orchestrates the full pipeline.
|
|
12
|
+
|
|
13
|
+
#### Core SPARC Pipeline
|
|
14
|
+
- `myaidev-workflow` - Multi-agent SPARC orchestrator with feedback loops, project profiles, TDD mode
|
|
15
|
+
- `myaidev-architect` - System architecture design with requirements analysis and compliance checking
|
|
16
|
+
- `myaidev-coder` - Pattern-aware code implementation with convention detection and self-review
|
|
17
|
+
- `myaidev-tester` - Test generation with TDD support (London/Chicago styles) and coverage analysis
|
|
18
|
+
- `myaidev-reviewer` - Code review with auto-fix capability, security scanning, and quality gates
|
|
19
|
+
- `myaidev-documenter` - Documentation generation with code analysis, writing, and validation
|
|
20
|
+
|
|
21
|
+
#### Standalone Development Tools
|
|
22
|
+
- `myaidev-analyze` - Deep codebase analysis: patterns, conventions, tech stack, dependencies, risks
|
|
23
|
+
- `myaidev-debug` - Systematic debugging with hypothesis testing and root cause analysis
|
|
24
|
+
- `myaidev-refactor` - Code smell detection, safe refactoring planning, and regression guarding
|
|
25
|
+
- `myaidev-performance` - Performance profiling, optimization, and before/after benchmarking
|
|
26
|
+
- `myaidev-migrate` - Framework upgrades, schema migrations, dependency swaps, pattern transitions
|
|
27
|
+
|
|
28
|
+
### Content Creation
|
|
29
|
+
- `content-writer` - Multi-agent pipeline (research, plan, write, SEO, edit, visuals)
|
|
30
|
+
- `content-rules-setup` - Interactive brand voice configuration
|
|
31
|
+
- `content-verifier` - Content uniqueness and quality verification
|
|
32
|
+
- `content-coordinator` - Batch content verification and publishing
|
|
33
|
+
- `content-enrichment` - Enrich articles with real-time data and visuals
|
|
34
|
+
|
|
35
|
+
### Publishing
|
|
36
|
+
- `wordpress-publisher` - WordPress REST API publishing
|
|
37
|
+
- `payloadcms-publisher` - PayloadCMS with Lexical format
|
|
38
|
+
- `docusaurus-publisher` - Docusaurus with sidebar config
|
|
39
|
+
- `mintlify-publisher` - Mintlify with navigation updates
|
|
40
|
+
- `astro-publisher` - Astro content collections
|
|
41
|
+
|
|
42
|
+
### Visual & Media
|
|
43
|
+
- `visual-generator` - AI image/video generation (Gemini, DALL-E, FLUX, Veo)
|
|
44
|
+
|
|
45
|
+
### Deployment & Infrastructure
|
|
46
|
+
- `deployer` - Multi-environment deployment (dev/staging/prod)
|
|
47
|
+
- `coolify-deployer` - Coolify PaaS deployment
|
|
48
|
+
- `openstack-manager` - OpenStack VM management
|
|
49
|
+
|
|
50
|
+
### Git & CI/CD
|
|
51
|
+
- `git-workflow` - PRs, releases, hotfixes, branch sync
|
|
52
|
+
|
|
53
|
+
### Security
|
|
54
|
+
- `security-tester` - Penetration testing (PTES methodology)
|
|
55
|
+
- `security-auditor` - Compliance auditing (PCI-DSS, GDPR, SOC 2)
|
|
56
|
+
|
|
57
|
+
### Skill Development
|
|
58
|
+
- `skill-builder` - Guided skill creation with concept discovery, iterative refinement, testing, and marketplace submission
|
|
59
|
+
- `skill-contributor` - Quick skill scaffolding and marketplace submission
|
|
60
|
+
|
|
61
|
+
### Configuration
|
|
62
|
+
- `configure` - Interactive environment setup wizard
|
|
63
|
+
|
|
64
|
+
## Content Customization
|
|
65
|
+
|
|
66
|
+
- **content-rules.md** - Brand voice and writing guidelines
|
|
67
|
+
- Run the `content-rules-setup` skill to generate this interactively
|
|
68
|
+
|
|
69
|
+
## Platform Configuration
|
|
70
|
+
|
|
71
|
+
Run the `configure` skill to set up credentials, or manually edit `.env`:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# WordPress
|
|
75
|
+
WORDPRESS_URL=https://your-site.com
|
|
76
|
+
WORDPRESS_USERNAME=your-username
|
|
77
|
+
WORDPRESS_APP_PASSWORD=your-app-password
|
|
78
|
+
|
|
79
|
+
# PayloadCMS
|
|
80
|
+
PAYLOADCMS_URL=https://cms.your-site.com
|
|
81
|
+
PAYLOADCMS_EMAIL=your-email
|
|
82
|
+
PAYLOADCMS_PASSWORD=your-password
|
|
83
|
+
|
|
84
|
+
# Visual APIs
|
|
85
|
+
GOOGLE_API_KEY=your-key
|
|
86
|
+
OPENAI_API_KEY=your-key
|
|
87
|
+
|
|
88
|
+
# Coolify
|
|
89
|
+
COOLIFY_URL=https://coolify.your-server.com
|
|
90
|
+
COOLIFY_API_KEY=your-key
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Scripts and Utilities
|
|
94
|
+
|
|
95
|
+
The `.myaidev-method/` directory contains helper scripts that skills can invoke:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
node .myaidev-method/scripts/payloadcms-publish.js "article.md"
|
|
99
|
+
node .myaidev-method/scripts/wordpress-health-check.js
|
|
100
|
+
node .myaidev-method/scripts/coolify-deploy-app.js --name myapp
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Project Structure
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
.claude/
|
|
107
|
+
├── skills/ # All skill definitions (SKILL.md + agents/)
|
|
108
|
+
├── mcp/ # MCP server configurations
|
|
109
|
+
└── CLAUDE.md # This file
|
|
110
|
+
.myaidev-method/
|
|
111
|
+
├── scripts/ # Publishing and deployment scripts
|
|
112
|
+
├── lib/ # Utility libraries
|
|
113
|
+
└── package.json # Script dependencies
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Updating
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
npx myaidev-method@latest update --claude # Interactive update
|
|
120
|
+
npx myaidev-method@latest update --claude --force # Force overwrite
|
|
121
|
+
npx myaidev-method@latest update --claude --dry-run # Preview changes
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
See `USER_GUIDE.md` for detailed instructions.
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sparc-architect
|
|
3
|
-
description: Analyzes requirements and designs system architecture following the SPARC Specification phase. Use when planning a new feature, designing system components, or creating technical specifications before implementation.
|
|
4
|
-
argument-hint: [requirement] [--scope=module]
|
|
5
|
-
allowed-tools: [Read, Write, Edit, Glob, Grep, Task, WebSearch]
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# SPARC Architect Skill
|
|
9
|
-
|
|
10
|
-
The Specification phase of the SPARC methodology. Analyze requirements, design system architecture, and create technical specifications.
|
|
11
|
-
|
|
12
|
-
Handles the **Specification (S)** phase of the SPARC methodology. Part of the `/myaidev-method:sparc-workflow` pipeline.
|
|
13
|
-
|
|
14
|
-
## Capabilities
|
|
15
|
-
|
|
16
|
-
- Requirements analysis and decomposition
|
|
17
|
-
- System architecture design
|
|
18
|
-
- Component interface definition
|
|
19
|
-
- Data flow and state management planning
|
|
20
|
-
- Technology stack recommendations
|
|
21
|
-
- Risk identification and mitigation strategies
|
|
22
|
-
- Integration point mapping
|
|
23
|
-
|
|
24
|
-
## Process
|
|
25
|
-
|
|
26
|
-
1. **Requirement Analysis**
|
|
27
|
-
- Parse and understand the requirement
|
|
28
|
-
- Identify stakeholders and constraints
|
|
29
|
-
- Define acceptance criteria
|
|
30
|
-
- List assumptions and dependencies
|
|
31
|
-
|
|
32
|
-
2. **Architecture Design**
|
|
33
|
-
- Design high-level system architecture
|
|
34
|
-
- Define component boundaries
|
|
35
|
-
- Specify interfaces and contracts
|
|
36
|
-
- Plan data models and schemas
|
|
37
|
-
|
|
38
|
-
3. **Technical Specification**
|
|
39
|
-
- Create detailed technical spec
|
|
40
|
-
- Document API endpoints (if applicable)
|
|
41
|
-
- Define error handling strategies
|
|
42
|
-
- Plan for scalability and performance
|
|
43
|
-
|
|
44
|
-
4. **Review Preparation**
|
|
45
|
-
- Generate architecture diagrams (descriptions)
|
|
46
|
-
- Create implementation roadmap
|
|
47
|
-
- Identify testing requirements
|
|
48
|
-
- Document security considerations
|
|
49
|
-
|
|
50
|
-
## Output Format
|
|
51
|
-
|
|
52
|
-
```markdown
|
|
53
|
-
# Technical Specification: [Feature Name]
|
|
54
|
-
|
|
55
|
-
## Overview
|
|
56
|
-
[Brief description of the feature/requirement]
|
|
57
|
-
|
|
58
|
-
## Requirements
|
|
59
|
-
- FR-1: [Functional requirement]
|
|
60
|
-
- FR-2: [Functional requirement]
|
|
61
|
-
- NFR-1: [Non-functional requirement]
|
|
62
|
-
|
|
63
|
-
## Architecture
|
|
64
|
-
|
|
65
|
-
### Components
|
|
66
|
-
- **[Component A]**: [Description and responsibility]
|
|
67
|
-
- **[Component B]**: [Description and responsibility]
|
|
68
|
-
|
|
69
|
-
### Interfaces
|
|
70
|
-
```typescript
|
|
71
|
-
interface ComponentA {
|
|
72
|
-
method(): ReturnType;
|
|
73
|
-
}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
### Data Flow
|
|
77
|
-
1. [Step 1]
|
|
78
|
-
2. [Step 2]
|
|
79
|
-
3. [Step 3]
|
|
80
|
-
|
|
81
|
-
## Implementation Plan
|
|
82
|
-
1. Phase 1: [Description]
|
|
83
|
-
2. Phase 2: [Description]
|
|
84
|
-
3. Phase 3: [Description]
|
|
85
|
-
|
|
86
|
-
## Testing Strategy
|
|
87
|
-
- Unit tests for: [components]
|
|
88
|
-
- Integration tests for: [flows]
|
|
89
|
-
- E2E tests for: [scenarios]
|
|
90
|
-
|
|
91
|
-
## Security Considerations
|
|
92
|
-
- [Consideration 1]
|
|
93
|
-
- [Consideration 2]
|
|
94
|
-
|
|
95
|
-
## Open Questions
|
|
96
|
-
- [ ] [Question 1]
|
|
97
|
-
- [ ] [Question 2]
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
## Parameters
|
|
101
|
-
|
|
102
|
-
| Parameter | Description | Default |
|
|
103
|
-
|-----------|-------------|---------|
|
|
104
|
-
| `requirement` | The feature or requirement to design | Required |
|
|
105
|
-
| `--scope` | file, module, project, system | module |
|
|
106
|
-
| `--depth` | shallow, standard, deep | standard |
|
|
107
|
-
| `--output` | Output file path | ./specs/[name].md |
|
|
108
|
-
|
|
109
|
-
## Example Usage
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
# Design a new feature
|
|
113
|
-
/myaidev-method:architect "User authentication with OAuth2 support"
|
|
114
|
-
|
|
115
|
-
# System-level architecture
|
|
116
|
-
/myaidev-method:architect "Migrate monolith to microservices" --scope=system --depth=deep
|
|
117
|
-
|
|
118
|
-
# Quick module design
|
|
119
|
-
/myaidev-method:architect "Add caching layer" --scope=module
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
## Integration
|
|
123
|
-
|
|
124
|
-
- Output feeds into `/myaidev-method:coder` for implementation
|
|
125
|
-
- Works with `/myaidev-method:sparc` for full workflow orchestration
|
|
126
|
-
- Specifications stored in `specs/` or `docs/` directory
|
|
127
|
-
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sparc-coder
|
|
3
|
-
description: Transforms specifications into working code following the SPARC Pseudocode and Architecture phases. Use when implementing features from specs, writing code from technical designs, or converting pseudocode to implementation.
|
|
4
|
-
argument-hint: [spec-file] [--implement]
|
|
5
|
-
allowed-tools: [Read, Write, Edit, Glob, Grep, Bash, Task]
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# SPARC Coder Skill
|
|
9
|
-
|
|
10
|
-
The Pseudocode and Architecture implementation phases of the SPARC methodology. Transform specifications into working code following established patterns.
|
|
11
|
-
|
|
12
|
-
Handles the **Pseudocode (P)** and **Architecture (A)** phases of the SPARC methodology. Part of the `/myaidev-method:sparc-workflow` pipeline.
|
|
13
|
-
|
|
14
|
-
## Capabilities
|
|
15
|
-
|
|
16
|
-
- Implement features from specifications
|
|
17
|
-
- Follow existing codebase patterns and conventions
|
|
18
|
-
- Generate clean, well-documented code
|
|
19
|
-
- Create necessary tests alongside implementation
|
|
20
|
-
- Handle error cases and edge conditions
|
|
21
|
-
- Integrate with existing systems
|
|
22
|
-
|
|
23
|
-
## Process
|
|
24
|
-
|
|
25
|
-
1. **Specification Review**
|
|
26
|
-
- Read and understand the technical specification
|
|
27
|
-
- Identify implementation requirements
|
|
28
|
-
- Map components to files/modules
|
|
29
|
-
|
|
30
|
-
2. **Pseudocode Planning**
|
|
31
|
-
- Create pseudocode for complex logic
|
|
32
|
-
- Plan function signatures and interfaces
|
|
33
|
-
- Identify shared utilities needed
|
|
34
|
-
|
|
35
|
-
3. **Implementation**
|
|
36
|
-
- Write code following project conventions
|
|
37
|
-
- Implement in logical, testable chunks
|
|
38
|
-
- Add appropriate comments and documentation
|
|
39
|
-
- Handle errors gracefully
|
|
40
|
-
|
|
41
|
-
4. **Self-Review**
|
|
42
|
-
- Check against specification
|
|
43
|
-
- Verify edge cases handled
|
|
44
|
-
- Ensure code is readable and maintainable
|
|
45
|
-
|
|
46
|
-
## Parameters
|
|
47
|
-
|
|
48
|
-
| Parameter | Description | Default |
|
|
49
|
-
|-----------|-------------|---------|
|
|
50
|
-
| `spec-file` | Path to specification file | Required |
|
|
51
|
-
| `--implement` | Start implementation immediately | false |
|
|
52
|
-
| `--module` | Target module/directory | auto-detect |
|
|
53
|
-
| `--tests` | Generate tests alongside code | true |
|
|
54
|
-
| `--dry-run` | Show plan without writing code | false |
|
|
55
|
-
|
|
56
|
-
## Example Usage
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
# Implement from specification
|
|
60
|
-
/myaidev-method:coder "./specs/auth-feature.md" --implement
|
|
61
|
-
|
|
62
|
-
# Preview implementation plan
|
|
63
|
-
/myaidev-method:coder "./specs/payment-integration.md" --dry-run
|
|
64
|
-
|
|
65
|
-
# Implement specific module
|
|
66
|
-
/myaidev-method:coder "./specs/api-endpoints.md" --module=src/api
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## Integration
|
|
70
|
-
|
|
71
|
-
- Receives input from `/myaidev-method:architect`
|
|
72
|
-
- Output reviewed by `/myaidev-method:reviewer`
|
|
73
|
-
- Tests validated by `/myaidev-method:tester`
|
|
74
|
-
- Part of `/myaidev-method:sparc` full workflow
|
|
75
|
-
|
|
76
|
-
## Output Structure
|
|
77
|
-
|
|
78
|
-
```
|
|
79
|
-
src/
|
|
80
|
-
├── [feature]/
|
|
81
|
-
│ ├── index.ts # Public API
|
|
82
|
-
│ ├── [component].ts # Implementation
|
|
83
|
-
│ ├── types.ts # TypeScript types
|
|
84
|
-
│ └── utils.ts # Utilities
|
|
85
|
-
tests/
|
|
86
|
-
└── [feature]/
|
|
87
|
-
├── [component].test.ts
|
|
88
|
-
└── integration.test.ts
|
|
89
|
-
```
|
|
90
|
-
|