@prateek_ai/agents-maker 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +659 -0
- package/agents/architect_agent.md +175 -0
- package/agents/code_agent.md +178 -0
- package/agents/compression_agent.md +226 -0
- package/agents/execution_agent.md +157 -0
- package/agents/orchestrator.md +406 -0
- package/agents/reviewer_agent.md +134 -0
- package/agents/ui_agent.md +147 -0
- package/agents/ux_agent.md +144 -0
- package/bin/cli.js +79 -0
- package/config/agents.yaml +388 -0
- package/config/domain_profiles.yaml +394 -0
- package/config/project.yaml.example +16 -0
- package/config/token_policies.yaml +325 -0
- package/context_loaders/__init__.py +15 -0
- package/context_loaders/__pycache__/__init__.cpython-314.pyc +0 -0
- package/context_loaders/__pycache__/file_chunker.cpython-314.pyc +0 -0
- package/context_loaders/__pycache__/project_summary.cpython-314.pyc +0 -0
- package/context_loaders/__pycache__/repo_tree.cpython-314.pyc +0 -0
- package/context_loaders/file_chunker.py +252 -0
- package/context_loaders/project_summary.py +369 -0
- package/context_loaders/repo_tree.py +203 -0
- package/package.json +46 -0
- package/quickstart.ps1 +252 -0
- package/quickstart.sh +232 -0
- package/requirements.txt +3 -0
- package/skills/analyze_repo.md +86 -0
- package/skills/animated_website.md +285 -0
- package/skills/compare_approaches.md +86 -0
- package/skills/define_data_schema.md +99 -0
- package/skills/design_api.md +126 -0
- package/skills/improve_copy.md +69 -0
- package/skills/review_code.md +83 -0
- package/skills/review_layout.md +89 -0
- package/skills/suggest_next.md +105 -0
- package/skills/summarize_history.md +89 -0
- package/skills/write_process_map.md +105 -0
- package/skills/write_tests.md +97 -0
- package/token_optimization/__pycache__/compressor.cpython-314.pyc +0 -0
- package/token_optimization/compressor.py +502 -0
- package/token_optimization/output_styles.md +80 -0
- package/tools/__pycache__/domain_utils.cpython-314.pyc +0 -0
- package/tools/__pycache__/generate_claude_md.cpython-314.pyc +0 -0
- package/tools/__pycache__/validate_kit.cpython-314.pyc +0 -0
- package/tools/domain_utils.py +141 -0
- package/tools/generate_claude_md.py +269 -0
- package/tools/generate_platform_configs.py +467 -0
- package/tools/generate_prompt.py +461 -0
- package/tools/init_project.py +454 -0
- package/tools/test_kit.py +363 -0
- package/tools/validate_kit.py +504 -0
package/quickstart.ps1
ADDED
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
#Requires -Version 5.1
|
|
2
|
+
<#
|
|
3
|
+
.SYNOPSIS
|
|
4
|
+
One-command setup for agents-maker on Windows.
|
|
5
|
+
|
|
6
|
+
.DESCRIPTION
|
|
7
|
+
quickstart.ps1 — agents-maker bootstrap for Windows PowerShell
|
|
8
|
+
|
|
9
|
+
Usage (from your project root, with agents-maker\ cloned inside it):
|
|
10
|
+
.\agents-maker\quickstart.ps1
|
|
11
|
+
.\agents-maker\quickstart.ps1 -Update # regenerate system_prompt.md
|
|
12
|
+
.\agents-maker\quickstart.ps1 -SkipInit # skip init, just validate + show usage
|
|
13
|
+
.\agents-maker\quickstart.ps1 -NoColor # plain output (CI/logging)
|
|
14
|
+
|
|
15
|
+
What it does:
|
|
16
|
+
1. Checks Python 3.9+ is available
|
|
17
|
+
2. Installs pyyaml (the only runtime dependency)
|
|
18
|
+
3. Runs tools\validate_kit.py to confirm the kit is intact
|
|
19
|
+
4. Runs tools\init_project.py to scan your project and generate system_prompt.md
|
|
20
|
+
5. Prints everything you need to run your first session
|
|
21
|
+
|
|
22
|
+
.PARAMETER Update
|
|
23
|
+
Regenerate system_prompt.md even if it already exists.
|
|
24
|
+
|
|
25
|
+
.PARAMETER SkipInit
|
|
26
|
+
Skip init_project.py — only install deps, validate, and show usage.
|
|
27
|
+
|
|
28
|
+
.PARAMETER NoColor
|
|
29
|
+
Disable colored output (useful in CI or when piping to a file).
|
|
30
|
+
#>
|
|
31
|
+
|
|
32
|
+
param(
|
|
33
|
+
[switch]$Update,
|
|
34
|
+
[switch]$SkipInit,
|
|
35
|
+
[switch]$NoColor
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
Set-StrictMode -Version Latest
|
|
39
|
+
$ErrorActionPreference = "Stop"
|
|
40
|
+
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
41
|
+
|
|
42
|
+
# ---------------------------------------------------------------------------
|
|
43
|
+
# Color helpers
|
|
44
|
+
# ---------------------------------------------------------------------------
|
|
45
|
+
function Write-Ok { param([string]$Msg) Write-Colored "[OK] " "Green" $Msg }
|
|
46
|
+
function Write-Info { param([string]$Msg) Write-Colored "[INFO] " "Cyan" $Msg }
|
|
47
|
+
function Write-Warn { param([string]$Msg) Write-Colored "[WARN] " "Yellow" $Msg }
|
|
48
|
+
function Write-Fail { param([string]$Msg) Write-Colored "[FAIL] " "Red" $Msg }
|
|
49
|
+
|
|
50
|
+
function Write-Colored {
|
|
51
|
+
param([string]$Tag, [string]$Color, [string]$Msg)
|
|
52
|
+
if ($NoColor) {
|
|
53
|
+
Write-Host "$Tag $Msg"
|
|
54
|
+
} else {
|
|
55
|
+
Write-Host $Tag -ForegroundColor $Color -NoNewline
|
|
56
|
+
Write-Host " $Msg"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function Write-Step { param([string]$Msg)
|
|
61
|
+
Write-Host ""
|
|
62
|
+
if ($NoColor) { Write-Host "==> $Msg" }
|
|
63
|
+
else { Write-Host "==> $Msg" -ForegroundColor White }
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function Write-Hr {
|
|
67
|
+
$line = "-" * 60
|
|
68
|
+
if ($NoColor) { Write-Host $line }
|
|
69
|
+
else { Write-Host $line -ForegroundColor Cyan }
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
# ---------------------------------------------------------------------------
|
|
73
|
+
# Locate kit directory (the directory this script lives in)
|
|
74
|
+
# ---------------------------------------------------------------------------
|
|
75
|
+
$KitDir = $PSScriptRoot
|
|
76
|
+
$ProjectRoot = Split-Path $KitDir -Parent
|
|
77
|
+
|
|
78
|
+
Write-Hr
|
|
79
|
+
Write-Host " agents-maker quickstart" -ForegroundColor White
|
|
80
|
+
Write-Host " Kit: $KitDir"
|
|
81
|
+
Write-Host " Project: $ProjectRoot"
|
|
82
|
+
Write-Hr
|
|
83
|
+
|
|
84
|
+
# ---------------------------------------------------------------------------
|
|
85
|
+
# Step 1 — Python version check
|
|
86
|
+
# ---------------------------------------------------------------------------
|
|
87
|
+
Write-Step "Step 1 - Checking Python"
|
|
88
|
+
|
|
89
|
+
$PY = $null
|
|
90
|
+
$candidates = @("python", "python3", "py")
|
|
91
|
+
|
|
92
|
+
foreach ($candidate in $candidates) {
|
|
93
|
+
$found = Get-Command $candidate -ErrorAction SilentlyContinue
|
|
94
|
+
if (-not $found) { continue }
|
|
95
|
+
|
|
96
|
+
try {
|
|
97
|
+
$versionStr = & $candidate -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')" 2>$null
|
|
98
|
+
if ($LASTEXITCODE -ne 0) { continue }
|
|
99
|
+
|
|
100
|
+
$parts = $versionStr.Trim().Split(".")
|
|
101
|
+
$major = [int]$parts[0]
|
|
102
|
+
$minor = [int]$parts[1]
|
|
103
|
+
|
|
104
|
+
if ($major -ge 3 -and $minor -ge 9) {
|
|
105
|
+
$PY = $candidate
|
|
106
|
+
Write-Ok "Found Python $versionStr at $($found.Source)"
|
|
107
|
+
break
|
|
108
|
+
} else {
|
|
109
|
+
Write-Warn "Skipping $candidate ($versionStr) - need 3.9+"
|
|
110
|
+
}
|
|
111
|
+
} catch {
|
|
112
|
+
continue
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (-not $PY) {
|
|
117
|
+
Write-Fail "Python 3.9+ not found."
|
|
118
|
+
Write-Host " Install from https://python.org, ensure 'Add Python to PATH' is checked, then re-run."
|
|
119
|
+
exit 1
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
# ---------------------------------------------------------------------------
|
|
123
|
+
# Step 2 — Install dependencies
|
|
124
|
+
# ---------------------------------------------------------------------------
|
|
125
|
+
Write-Step "Step 2 - Installing dependencies"
|
|
126
|
+
|
|
127
|
+
$ReqFile = Join-Path $KitDir "requirements.txt"
|
|
128
|
+
if (-not (Test-Path $ReqFile)) {
|
|
129
|
+
Write-Fail "requirements.txt not found at $ReqFile"
|
|
130
|
+
exit 1
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
& $PY -m pip install -r $ReqFile --quiet
|
|
134
|
+
if ($LASTEXITCODE -ne 0) {
|
|
135
|
+
Write-Fail "pip install failed. Try: $PY -m pip install pyyaml"
|
|
136
|
+
exit 1
|
|
137
|
+
}
|
|
138
|
+
Write-Ok "Dependencies installed (pyyaml)"
|
|
139
|
+
|
|
140
|
+
# ---------------------------------------------------------------------------
|
|
141
|
+
# Step 3 — Validate kit integrity
|
|
142
|
+
# ---------------------------------------------------------------------------
|
|
143
|
+
Write-Step "Step 3 - Validating kit integrity"
|
|
144
|
+
|
|
145
|
+
$Validator = Join-Path $KitDir "tools\validate_kit.py"
|
|
146
|
+
if (-not (Test-Path $Validator)) {
|
|
147
|
+
Write-Fail "tools\validate_kit.py not found - is the kit complete?"
|
|
148
|
+
exit 1
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
& $PY $Validator
|
|
152
|
+
if ($LASTEXITCODE -ne 0) {
|
|
153
|
+
Write-Fail "Kit validation failed - see output above."
|
|
154
|
+
Write-Host ""
|
|
155
|
+
Write-Host " If you modified agent or skill files, re-run validate_kit.py manually:"
|
|
156
|
+
Write-Host " $PY agents-maker\tools\validate_kit.py"
|
|
157
|
+
exit 1
|
|
158
|
+
}
|
|
159
|
+
Write-Ok "All integrity checks passed"
|
|
160
|
+
|
|
161
|
+
# ---------------------------------------------------------------------------
|
|
162
|
+
# Step 4 — init_project.py
|
|
163
|
+
# ---------------------------------------------------------------------------
|
|
164
|
+
if (-not $SkipInit) {
|
|
165
|
+
Write-Step "Step 4 - Initializing project (generating system_prompt.md)"
|
|
166
|
+
|
|
167
|
+
$InitScript = Join-Path $KitDir "tools\init_project.py"
|
|
168
|
+
if (-not (Test-Path $InitScript)) {
|
|
169
|
+
Write-Fail "tools\init_project.py not found - is the kit complete?"
|
|
170
|
+
exit 1
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
Write-Host ""
|
|
174
|
+
$updateArg = if ($Update) { "--update" } else { "" }
|
|
175
|
+
Write-Info "Running: $PY $InitScript $updateArg --path $ProjectRoot"
|
|
176
|
+
Write-Info "You will be asked to confirm or override the detected domain."
|
|
177
|
+
Write-Host ""
|
|
178
|
+
|
|
179
|
+
if ($Update) {
|
|
180
|
+
& $PY $InitScript "--update" "--path" $ProjectRoot
|
|
181
|
+
} else {
|
|
182
|
+
& $PY $InitScript "--path" $ProjectRoot
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
if ($LASTEXITCODE -ne 0) {
|
|
186
|
+
Write-Fail "init_project.py failed - see output above."
|
|
187
|
+
exit 1
|
|
188
|
+
}
|
|
189
|
+
Write-Ok "init_project.py completed"
|
|
190
|
+
} else {
|
|
191
|
+
Write-Step "Step 4 - Skipping init (-SkipInit)"
|
|
192
|
+
Write-Info "system_prompt.md was not regenerated."
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
# ---------------------------------------------------------------------------
|
|
196
|
+
# Step 5 — Final summary and usage guide
|
|
197
|
+
# ---------------------------------------------------------------------------
|
|
198
|
+
$SystemPromptPath = Join-Path $KitDir "system_prompt.md"
|
|
199
|
+
|
|
200
|
+
Write-Host ""
|
|
201
|
+
Write-Hr
|
|
202
|
+
Write-Host " Setup complete. Here is everything you need to know." -ForegroundColor White
|
|
203
|
+
Write-Hr
|
|
204
|
+
Write-Host ""
|
|
205
|
+
|
|
206
|
+
if (Test-Path $SystemPromptPath) {
|
|
207
|
+
$bytes = (Get-Item $SystemPromptPath).Length
|
|
208
|
+
$tokens = [int]($bytes / 4)
|
|
209
|
+
Write-Ok "system_prompt.md (~$bytes chars, ~$tokens tokens)"
|
|
210
|
+
Write-Host " Paste it into your AI tool's system prompt / project instructions."
|
|
211
|
+
Write-Host " You only need to do this once per AI context."
|
|
212
|
+
} else {
|
|
213
|
+
Write-Warn "system_prompt.md was not created. Re-run without -SkipInit."
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
Write-Host ""
|
|
217
|
+
Write-Host " How to generate prompts" -ForegroundColor White
|
|
218
|
+
Write-Host ""
|
|
219
|
+
Write-Host " Basic:"
|
|
220
|
+
Write-Host " $PY agents-maker\tools\generate_prompt.py `"describe your task here`""
|
|
221
|
+
Write-Host ""
|
|
222
|
+
Write-Host " With phase:"
|
|
223
|
+
Write-Host " $PY agents-maker\tools\generate_prompt.py `"your task`" --phase implementation"
|
|
224
|
+
Write-Host " $PY agents-maker\tools\generate_prompt.py `"your task`" --phase review"
|
|
225
|
+
Write-Host " $PY agents-maker\tools\generate_prompt.py `"your task`" --phase solution_design"
|
|
226
|
+
Write-Host ""
|
|
227
|
+
Write-Host " With token compression:"
|
|
228
|
+
Write-Host " $PY agents-maker\tools\generate_prompt.py `"your task`" --compress"
|
|
229
|
+
Write-Host ""
|
|
230
|
+
Write-Host " With full system prompt (for models without persistent system prompt):"
|
|
231
|
+
Write-Host " $PY agents-maker\tools\generate_prompt.py `"your task`" --full"
|
|
232
|
+
Write-Host ""
|
|
233
|
+
Write-Host " Valid phases: task_framing | requirements | solution_design |"
|
|
234
|
+
Write-Host " implementation | review_refinement | handoff"
|
|
235
|
+
Write-Host ""
|
|
236
|
+
Write-Host " Context loaders (run and paste output with your task)" -ForegroundColor White
|
|
237
|
+
Write-Host ""
|
|
238
|
+
Write-Host " $PY agents-maker\context_loaders\project_summary.py --path ."
|
|
239
|
+
Write-Host " $PY agents-maker\context_loaders\repo_tree.py --path ."
|
|
240
|
+
Write-Host " $PY agents-maker\context_loaders\file_chunker.py --path . --files src\main.py src\auth.py"
|
|
241
|
+
Write-Host ""
|
|
242
|
+
Write-Host " Keeping system_prompt.md current" -ForegroundColor White
|
|
243
|
+
Write-Host ""
|
|
244
|
+
Write-Host " .\agents-maker\quickstart.ps1 -Update"
|
|
245
|
+
Write-Host " # or: $PY agents-maker\tools\init_project.py --update"
|
|
246
|
+
Write-Host ""
|
|
247
|
+
Write-Host " Validate any time" -ForegroundColor White
|
|
248
|
+
Write-Host ""
|
|
249
|
+
Write-Host " $PY agents-maker\tools\validate_kit.py"
|
|
250
|
+
Write-Host ""
|
|
251
|
+
Write-Hr
|
|
252
|
+
Write-Host ""
|
package/quickstart.sh
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# quickstart.sh — One-command setup for agents-maker
|
|
3
|
+
#
|
|
4
|
+
# Usage (from your project root, with agents-maker/ cloned inside it):
|
|
5
|
+
# bash agents-maker/quickstart.sh
|
|
6
|
+
# bash agents-maker/quickstart.sh --update # regenerate system_prompt.md
|
|
7
|
+
# bash agents-maker/quickstart.sh --skip-init # skip init, just validate + show usage
|
|
8
|
+
# bash agents-maker/quickstart.sh --no-color # plain output (CI/logging)
|
|
9
|
+
#
|
|
10
|
+
# What it does:
|
|
11
|
+
# 1. Checks Python 3.9+ is available
|
|
12
|
+
# 2. Installs pyyaml (the only runtime dependency)
|
|
13
|
+
# 3. Runs tools/validate_kit.py to confirm the kit is intact
|
|
14
|
+
# 4. Runs tools/init_project.py to scan your project and generate system_prompt.md
|
|
15
|
+
# 5. Prints everything you need to run your first session
|
|
16
|
+
|
|
17
|
+
set -euo pipefail
|
|
18
|
+
|
|
19
|
+
# ---------------------------------------------------------------------------
|
|
20
|
+
# Arg parsing
|
|
21
|
+
# ---------------------------------------------------------------------------
|
|
22
|
+
UPDATE_FLAG=""
|
|
23
|
+
SKIP_INIT=0
|
|
24
|
+
NO_COLOR=0
|
|
25
|
+
|
|
26
|
+
for arg in "$@"; do
|
|
27
|
+
case "$arg" in
|
|
28
|
+
--update) UPDATE_FLAG="--update" ;;
|
|
29
|
+
--skip-init) SKIP_INIT=1 ;;
|
|
30
|
+
--no-color) NO_COLOR=1 ;;
|
|
31
|
+
--help|-h)
|
|
32
|
+
# Print only the leading doc block (lines 2..first blank line)
|
|
33
|
+
tail -n +2 "$0" | while IFS= read -r line; do
|
|
34
|
+
[[ "$line" =~ ^# ]] || break
|
|
35
|
+
echo "${line#\# }" | sed 's/^#$//'
|
|
36
|
+
done
|
|
37
|
+
exit 0
|
|
38
|
+
;;
|
|
39
|
+
*)
|
|
40
|
+
echo "Unknown option: $arg (use --help for usage)" >&2
|
|
41
|
+
exit 1
|
|
42
|
+
;;
|
|
43
|
+
esac
|
|
44
|
+
done
|
|
45
|
+
|
|
46
|
+
# ---------------------------------------------------------------------------
|
|
47
|
+
# Color helpers
|
|
48
|
+
# ---------------------------------------------------------------------------
|
|
49
|
+
if [[ $NO_COLOR -eq 0 && -t 1 ]]; then
|
|
50
|
+
GREEN="\033[0;32m"
|
|
51
|
+
YELLOW="\033[0;33m"
|
|
52
|
+
CYAN="\033[0;36m"
|
|
53
|
+
RED="\033[0;31m"
|
|
54
|
+
BOLD="\033[1m"
|
|
55
|
+
RESET="\033[0m"
|
|
56
|
+
else
|
|
57
|
+
GREEN="" YELLOW="" CYAN="" RED="" BOLD="" RESET=""
|
|
58
|
+
fi
|
|
59
|
+
|
|
60
|
+
ok() { echo -e "${GREEN}[OK]${RESET} $*"; }
|
|
61
|
+
info() { echo -e "${CYAN}[INFO]${RESET} $*"; }
|
|
62
|
+
warn() { echo -e "${YELLOW}[WARN]${RESET} $*"; }
|
|
63
|
+
fail() { echo -e "${RED}[FAIL]${RESET} $*" >&2; }
|
|
64
|
+
step() { echo -e "\n${BOLD}==> $*${RESET}"; }
|
|
65
|
+
hr() { echo -e "${CYAN}$(printf '%.0s─' {1..60})${RESET}"; }
|
|
66
|
+
|
|
67
|
+
# ---------------------------------------------------------------------------
|
|
68
|
+
# Locate kit directory (the directory this script lives in)
|
|
69
|
+
# ---------------------------------------------------------------------------
|
|
70
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
71
|
+
KIT_DIR="$SCRIPT_DIR"
|
|
72
|
+
PROJECT_ROOT="$(dirname "$KIT_DIR")"
|
|
73
|
+
|
|
74
|
+
hr
|
|
75
|
+
echo -e "${BOLD} agents-maker quickstart${RESET}"
|
|
76
|
+
echo " Kit: $KIT_DIR"
|
|
77
|
+
echo " Project: $PROJECT_ROOT"
|
|
78
|
+
hr
|
|
79
|
+
|
|
80
|
+
# ---------------------------------------------------------------------------
|
|
81
|
+
# Step 1 — Python version check
|
|
82
|
+
# ---------------------------------------------------------------------------
|
|
83
|
+
step "Step 1 — Checking Python"
|
|
84
|
+
|
|
85
|
+
PY=""
|
|
86
|
+
for candidate in python3 python python3.12 python3.11 python3.10 python3.9; do
|
|
87
|
+
if command -v "$candidate" &>/dev/null; then
|
|
88
|
+
version=$("$candidate" -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')
|
|
89
|
+
major="${version%%.*}"
|
|
90
|
+
minor="${version#*.}"
|
|
91
|
+
if [[ $major -ge 3 && $minor -ge 9 ]]; then
|
|
92
|
+
PY="$candidate"
|
|
93
|
+
ok "Found Python $version at $(command -v "$candidate")"
|
|
94
|
+
break
|
|
95
|
+
else
|
|
96
|
+
warn "Skipping $candidate ($version) — need 3.9+"
|
|
97
|
+
fi
|
|
98
|
+
fi
|
|
99
|
+
done
|
|
100
|
+
|
|
101
|
+
if [[ -z "$PY" ]]; then
|
|
102
|
+
fail "Python 3.9+ not found. Install from https://python.org and re-run."
|
|
103
|
+
exit 1
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
# ---------------------------------------------------------------------------
|
|
107
|
+
# Step 2 — Install dependencies
|
|
108
|
+
# ---------------------------------------------------------------------------
|
|
109
|
+
step "Step 2 — Installing dependencies"
|
|
110
|
+
|
|
111
|
+
REQ="$KIT_DIR/requirements.txt"
|
|
112
|
+
if [[ ! -f "$REQ" ]]; then
|
|
113
|
+
fail "requirements.txt not found at $REQ"
|
|
114
|
+
exit 1
|
|
115
|
+
fi
|
|
116
|
+
|
|
117
|
+
if "$PY" -m pip install -r "$REQ" --quiet; then
|
|
118
|
+
ok "Dependencies installed (pyyaml)"
|
|
119
|
+
else
|
|
120
|
+
fail "pip install failed. Try: $PY -m pip install pyyaml"
|
|
121
|
+
exit 1
|
|
122
|
+
fi
|
|
123
|
+
|
|
124
|
+
# ---------------------------------------------------------------------------
|
|
125
|
+
# Step 3 — Validate kit integrity
|
|
126
|
+
# ---------------------------------------------------------------------------
|
|
127
|
+
step "Step 3 — Validating kit integrity"
|
|
128
|
+
|
|
129
|
+
VALIDATOR="$KIT_DIR/tools/validate_kit.py"
|
|
130
|
+
if [[ ! -f "$VALIDATOR" ]]; then
|
|
131
|
+
fail "tools/validate_kit.py not found — is the kit complete?"
|
|
132
|
+
exit 1
|
|
133
|
+
fi
|
|
134
|
+
|
|
135
|
+
if "$PY" "$VALIDATOR"; then
|
|
136
|
+
ok "All integrity checks passed"
|
|
137
|
+
else
|
|
138
|
+
fail "Kit validation failed — see output above."
|
|
139
|
+
echo ""
|
|
140
|
+
echo " If you modified agent or skill files, re-run validate_kit.py manually:"
|
|
141
|
+
echo " $PY agents-maker/tools/validate_kit.py"
|
|
142
|
+
exit 1
|
|
143
|
+
fi
|
|
144
|
+
|
|
145
|
+
# ---------------------------------------------------------------------------
|
|
146
|
+
# Step 4 — init_project.py
|
|
147
|
+
# ---------------------------------------------------------------------------
|
|
148
|
+
if [[ $SKIP_INIT -eq 0 ]]; then
|
|
149
|
+
step "Step 4 — Initializing project (generating system_prompt.md)"
|
|
150
|
+
|
|
151
|
+
INIT="$KIT_DIR/tools/init_project.py"
|
|
152
|
+
if [[ ! -f "$INIT" ]]; then
|
|
153
|
+
fail "tools/init_project.py not found — is the kit complete?"
|
|
154
|
+
exit 1
|
|
155
|
+
fi
|
|
156
|
+
|
|
157
|
+
echo ""
|
|
158
|
+
info "Running: $PY $INIT $UPDATE_FLAG --path $PROJECT_ROOT"
|
|
159
|
+
info "You will be asked to confirm or override the detected domain."
|
|
160
|
+
echo ""
|
|
161
|
+
|
|
162
|
+
# Run with --path so init_project.py scans the correct project root
|
|
163
|
+
if "$PY" "$INIT" $UPDATE_FLAG --path "$PROJECT_ROOT"; then
|
|
164
|
+
ok "init_project.py completed"
|
|
165
|
+
else
|
|
166
|
+
fail "init_project.py failed — see output above."
|
|
167
|
+
exit 1
|
|
168
|
+
fi
|
|
169
|
+
else
|
|
170
|
+
step "Step 4 — Skipping init (--skip-init)"
|
|
171
|
+
info "system_prompt.md was not regenerated."
|
|
172
|
+
fi
|
|
173
|
+
|
|
174
|
+
# ---------------------------------------------------------------------------
|
|
175
|
+
# Step 5 — Final summary and usage guide
|
|
176
|
+
# ---------------------------------------------------------------------------
|
|
177
|
+
SYSTEM_PROMPT="$KIT_DIR/system_prompt.md"
|
|
178
|
+
|
|
179
|
+
echo ""
|
|
180
|
+
hr
|
|
181
|
+
echo -e "${BOLD} Setup complete. Here is everything you need to know.${RESET}"
|
|
182
|
+
hr
|
|
183
|
+
echo ""
|
|
184
|
+
|
|
185
|
+
# system_prompt.md status
|
|
186
|
+
if [[ -f "$SYSTEM_PROMPT" ]]; then
|
|
187
|
+
CHARS=$(wc -c < "$SYSTEM_PROMPT" | tr -d ' ')
|
|
188
|
+
TOKENS=$(( CHARS / 4 ))
|
|
189
|
+
ok "system_prompt.md (~${CHARS} chars, ~${TOKENS} tokens)"
|
|
190
|
+
echo " Paste it into your AI tool's system prompt / project instructions."
|
|
191
|
+
echo " You only need to do this once per AI context."
|
|
192
|
+
else
|
|
193
|
+
warn "system_prompt.md was not created. Run init without --skip-init."
|
|
194
|
+
fi
|
|
195
|
+
|
|
196
|
+
echo ""
|
|
197
|
+
echo -e "${BOLD} How to generate prompts${RESET}"
|
|
198
|
+
echo ""
|
|
199
|
+
echo " Basic:"
|
|
200
|
+
echo " $PY agents-maker/tools/generate_prompt.py \"describe your task here\""
|
|
201
|
+
echo ""
|
|
202
|
+
echo " With phase:"
|
|
203
|
+
echo " $PY agents-maker/tools/generate_prompt.py \"your task\" --phase implementation"
|
|
204
|
+
echo " $PY agents-maker/tools/generate_prompt.py \"your task\" --phase review"
|
|
205
|
+
echo " $PY agents-maker/tools/generate_prompt.py \"your task\" --phase solution_design"
|
|
206
|
+
echo ""
|
|
207
|
+
echo " With token compression:"
|
|
208
|
+
echo " $PY agents-maker/tools/generate_prompt.py \"your task\" --compress"
|
|
209
|
+
echo ""
|
|
210
|
+
echo " With full system prompt (for models without persistent system prompt):"
|
|
211
|
+
echo " $PY agents-maker/tools/generate_prompt.py \"your task\" --full"
|
|
212
|
+
echo ""
|
|
213
|
+
echo " Valid phases: task_framing | requirements | solution_design |"
|
|
214
|
+
echo " implementation | review_refinement | handoff"
|
|
215
|
+
echo ""
|
|
216
|
+
echo -e "${BOLD} Context loaders (run these and paste the output with your task)${RESET}"
|
|
217
|
+
echo ""
|
|
218
|
+
echo " $PY agents-maker/context_loaders/project_summary.py --path ."
|
|
219
|
+
echo " $PY agents-maker/context_loaders/repo_tree.py --path ."
|
|
220
|
+
echo " $PY agents-maker/context_loaders/file_chunker.py --path . --files src/main.py src/auth.py"
|
|
221
|
+
echo ""
|
|
222
|
+
echo -e "${BOLD} Keeping system_prompt.md current${RESET}"
|
|
223
|
+
echo ""
|
|
224
|
+
echo " bash agents-maker/quickstart.sh --update"
|
|
225
|
+
echo " # or: $PY agents-maker/tools/init_project.py --update"
|
|
226
|
+
echo ""
|
|
227
|
+
echo -e "${BOLD} Validate any time${RESET}"
|
|
228
|
+
echo ""
|
|
229
|
+
echo " $PY agents-maker/tools/validate_kit.py"
|
|
230
|
+
echo ""
|
|
231
|
+
hr
|
|
232
|
+
echo ""
|
package/requirements.txt
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Skill: analyze_repo
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
|
|
5
|
+
Walk a repository's file tree and produce a compact, structured summary of the project: detected stack, primary services or modules, main entrypoints, test structure, and key configuration files. Used by the Orchestrator and Architect Agent to build the Project State block at the start of a session.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## When to invoke
|
|
10
|
+
|
|
11
|
+
- Session start, when no project summary is available.
|
|
12
|
+
- When routing a task that requires understanding the broader project structure beyond the provided snippets.
|
|
13
|
+
- When the Architect Agent needs a service map before designing a new component.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Input expectations
|
|
18
|
+
|
|
19
|
+
| Input | Required | Description |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| `repo_path` | Yes | Root path of the repository |
|
|
22
|
+
| `filter_paths` | No | List of subdirectory prefixes to include (e.g., `src/`, `app/`, `services/`) |
|
|
23
|
+
| `exclude_patterns` | No | Patterns to exclude (e.g., `node_modules/`, `__pycache__/`, `.git/`) |
|
|
24
|
+
| `max_depth` | No | Maximum directory depth to traverse (default: 4) |
|
|
25
|
+
|
|
26
|
+
In a conversational context, the user provides these via the `context_loaders/repo_tree.py` and `context_loaders/project_summary.py` scripts, and pastes the output.
|
|
27
|
+
|
|
28
|
+
**If required input is missing:**
|
|
29
|
+
- `repo_path` — if no path is provided and no repo context has been pasted, ask: "Please paste the output of `python agents-maker/context_loaders/repo_tree.py` or describe your project's directory structure." Do not produce a summary from nothing.
|
|
30
|
+
- `filter_paths` — default to scanning the entire repo up to `max_depth`.
|
|
31
|
+
- `exclude_patterns` — default to excluding `node_modules/`, `__pycache__/`, `.git/`, `dist/`, `build/`.
|
|
32
|
+
- `max_depth` — default to 4.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Output format
|
|
37
|
+
|
|
38
|
+
The skill produces a structured text block:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
## Project Summary
|
|
42
|
+
|
|
43
|
+
**Stack**: <language(s), runtime version(s), primary framework(s)>
|
|
44
|
+
**Build tool**: <e.g., pip + setuptools, npm + webpack, gradle>
|
|
45
|
+
**Test framework**: <e.g., pytest, jest, JUnit>
|
|
46
|
+
**Containerization**: <Docker | none | Kubernetes manifests present>
|
|
47
|
+
|
|
48
|
+
## Services / Modules
|
|
49
|
+
|
|
50
|
+
| Name | Path | Responsibility |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| <name> | <path> | <one-line description> |
|
|
53
|
+
|
|
54
|
+
## Main Entrypoints
|
|
55
|
+
|
|
56
|
+
| File | Purpose |
|
|
57
|
+
|---|---|
|
|
58
|
+
| <path> | <what it starts or exports> |
|
|
59
|
+
|
|
60
|
+
## Key Config Files
|
|
61
|
+
|
|
62
|
+
| File | Purpose |
|
|
63
|
+
|---|---|
|
|
64
|
+
| <path> | <what it configures> |
|
|
65
|
+
|
|
66
|
+
## Test Structure
|
|
67
|
+
|
|
68
|
+
| Path | Type | Coverage scope |
|
|
69
|
+
|---|---|---|
|
|
70
|
+
| <path> | unit | integration | e2e | <scope> |
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Token cost tier
|
|
76
|
+
|
|
77
|
+
**Medium.** Involves reading file tree and inspecting key files. Output is typically 300–600 tokens.
|
|
78
|
+
|
|
79
|
+
Compression hint: the output is already compact. Do not summarize it further — it is the basis for all other context in the session.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Notes
|
|
84
|
+
|
|
85
|
+
- This skill is implemented as `context_loaders/project_summary.py`. In agent sessions without tool access, the user runs it locally and pastes the output.
|
|
86
|
+
- If the repo has no recognizable structure, return the raw tree truncated at `max_depth` and note: "Could not detect stack — please specify language and framework manually."
|