@fifine/aim-studio 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +159 -0
- package/bin/aim.js +3 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +89 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/commands/init.d.ts +13 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +513 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/update.d.ts +27 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +1275 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/configurators/claude.d.ts +32 -0
- package/dist/configurators/claude.d.ts.map +1 -0
- package/dist/configurators/claude.js +98 -0
- package/dist/configurators/claude.js.map +1 -0
- package/dist/configurators/index.d.ts +51 -0
- package/dist/configurators/index.d.ts.map +1 -0
- package/dist/configurators/index.js +113 -0
- package/dist/configurators/index.js.map +1 -0
- package/dist/configurators/shared.d.ts +12 -0
- package/dist/configurators/shared.d.ts.map +1 -0
- package/dist/configurators/shared.js +21 -0
- package/dist/configurators/shared.js.map +1 -0
- package/dist/configurators/workflow.d.ts +28 -0
- package/dist/configurators/workflow.d.ts.map +1 -0
- package/dist/configurators/workflow.js +147 -0
- package/dist/configurators/workflow.js.map +1 -0
- package/dist/constants/paths.d.ts +68 -0
- package/dist/constants/paths.d.ts.map +1 -0
- package/dist/constants/paths.js +77 -0
- package/dist/constants/paths.js.map +1 -0
- package/dist/constants/version.d.ts +9 -0
- package/dist/constants/version.d.ts.map +1 -0
- package/dist/constants/version.js +15 -0
- package/dist/constants/version.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/migrations/index.d.ts +54 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +160 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/manifests/0.0.1.json +9 -0
- package/dist/migrations/manifests/0.1.9.json +30 -0
- package/dist/migrations/manifests/0.2.0.json +49 -0
- package/dist/migrations/manifests/0.2.12.json +9 -0
- package/dist/migrations/manifests/0.2.13.json +9 -0
- package/dist/migrations/manifests/0.2.14.json +175 -0
- package/dist/migrations/manifests/0.2.15.json +33 -0
- package/dist/migrations/manifests/0.3.0-beta.0.json +278 -0
- package/dist/migrations/manifests/0.3.0-beta.1.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.10.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.11.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.12.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.13.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.14.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.15.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.16.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.2.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.3.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.4.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.5.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.6.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.7.json +11 -0
- package/dist/migrations/manifests/0.3.0-beta.8.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.9.json +9 -0
- package/dist/migrations/manifests/0.3.0-rc.0.json +9 -0
- package/dist/migrations/manifests/0.3.0-rc.1.json +9 -0
- package/dist/migrations/manifests/0.3.0-rc.2.json +9 -0
- package/dist/templates/CLAUDE.md +71 -0
- package/dist/templates/aim/gitignore.txt +29 -0
- package/dist/templates/aim/index.d.ts +49 -0
- package/dist/templates/aim/index.d.ts.map +1 -0
- package/dist/templates/aim/index.js +92 -0
- package/dist/templates/aim/index.js.map +1 -0
- package/dist/templates/aim/scripts/__init__.py +5 -0
- package/dist/templates/aim/scripts/add_session.py +392 -0
- package/dist/templates/aim/scripts/common/__init__.py +80 -0
- package/dist/templates/aim/scripts/common/cli_adapter.py +435 -0
- package/dist/templates/aim/scripts/common/developer.py +190 -0
- package/dist/templates/aim/scripts/common/git_context.py +383 -0
- package/dist/templates/aim/scripts/common/paths.py +347 -0
- package/dist/templates/aim/scripts/common/phase.py +253 -0
- package/dist/templates/aim/scripts/common/registry.py +366 -0
- package/dist/templates/aim/scripts/common/task_queue.py +255 -0
- package/dist/templates/aim/scripts/common/task_utils.py +178 -0
- package/dist/templates/aim/scripts/common/worktree.py +219 -0
- package/dist/templates/aim/scripts/create_bootstrap.py +290 -0
- package/dist/templates/aim/scripts/get_context.py +16 -0
- package/dist/templates/aim/scripts/get_developer.py +26 -0
- package/dist/templates/aim/scripts/init_developer.py +51 -0
- package/dist/templates/aim/scripts/multi_agent/__init__.py +5 -0
- package/dist/templates/aim/scripts/multi_agent/cleanup.py +403 -0
- package/dist/templates/aim/scripts/multi_agent/create_pr.py +329 -0
- package/dist/templates/aim/scripts/multi_agent/plan.py +233 -0
- package/dist/templates/aim/scripts/multi_agent/start.py +461 -0
- package/dist/templates/aim/scripts/multi_agent/status.py +817 -0
- package/dist/templates/aim/scripts/task.py +1068 -0
- package/dist/templates/aim/scripts-shell-archive/add-session.sh +384 -0
- package/dist/templates/aim/scripts-shell-archive/common/developer.sh +129 -0
- package/dist/templates/aim/scripts-shell-archive/common/git-context.sh +263 -0
- package/dist/templates/aim/scripts-shell-archive/common/paths.sh +208 -0
- package/dist/templates/aim/scripts-shell-archive/common/phase.sh +150 -0
- package/dist/templates/aim/scripts-shell-archive/common/registry.sh +247 -0
- package/dist/templates/aim/scripts-shell-archive/common/task-queue.sh +142 -0
- package/dist/templates/aim/scripts-shell-archive/common/task-utils.sh +151 -0
- package/dist/templates/aim/scripts-shell-archive/common/worktree.sh +128 -0
- package/dist/templates/aim/scripts-shell-archive/create-bootstrap.sh +299 -0
- package/dist/templates/aim/scripts-shell-archive/get-context.sh +7 -0
- package/dist/templates/aim/scripts-shell-archive/get-developer.sh +15 -0
- package/dist/templates/aim/scripts-shell-archive/init-developer.sh +34 -0
- package/dist/templates/aim/scripts-shell-archive/multi-agent/cleanup.sh +396 -0
- package/dist/templates/aim/scripts-shell-archive/multi-agent/create-pr.sh +241 -0
- package/dist/templates/aim/scripts-shell-archive/multi-agent/plan.sh +207 -0
- package/dist/templates/aim/scripts-shell-archive/multi-agent/start.sh +317 -0
- package/dist/templates/aim/scripts-shell-archive/multi-agent/status.sh +828 -0
- package/dist/templates/aim/scripts-shell-archive/task.sh +1204 -0
- package/dist/templates/aim/tasks/.gitkeep +0 -0
- package/dist/templates/aim/workflow.md +258 -0
- package/dist/templates/aim/worktree.yaml +47 -0
- package/dist/templates/claude/agents/check.md +122 -0
- package/dist/templates/claude/agents/debug.md +106 -0
- package/dist/templates/claude/agents/dispatch.md +230 -0
- package/dist/templates/claude/agents/implement.md +96 -0
- package/dist/templates/claude/agents/plan.md +396 -0
- package/dist/templates/claude/agents/research.md +120 -0
- package/dist/templates/claude/agents/story.md +53 -0
- package/dist/templates/claude/commands/aim/before-backend-dev.md +13 -0
- package/dist/templates/claude/commands/aim/before-frontend-dev.md +13 -0
- package/dist/templates/claude/commands/aim/break-loop.md +153 -0
- package/dist/templates/claude/commands/aim/check-backend.md +13 -0
- package/dist/templates/claude/commands/aim/check-cross-layer.md +153 -0
- package/dist/templates/claude/commands/aim/check-frontend.md +13 -0
- package/dist/templates/claude/commands/aim/check-story.md +59 -0
- package/dist/templates/claude/commands/aim/create-command.md +154 -0
- package/dist/templates/claude/commands/aim/export.md +187 -0
- package/dist/templates/claude/commands/aim/finish-work.md +104 -0
- package/dist/templates/claude/commands/aim/integrate-skill.md +219 -0
- package/dist/templates/claude/commands/aim/onboard.md +358 -0
- package/dist/templates/claude/commands/aim/parallel.md +217 -0
- package/dist/templates/claude/commands/aim/portrait.md +170 -0
- package/dist/templates/claude/commands/aim/record-session.md +92 -0
- package/dist/templates/claude/commands/aim/start.md +112 -0
- package/dist/templates/claude/commands/aim/story.md +140 -0
- package/dist/templates/claude/commands/aim/update-spec.md +285 -0
- package/dist/templates/claude/commands/aim/visualize.md +182 -0
- package/dist/templates/claude/commands/trellis/before-backend-dev.md +13 -0
- package/dist/templates/claude/commands/trellis/before-frontend-dev.md +13 -0
- package/dist/templates/claude/commands/trellis/break-loop.md +125 -0
- package/dist/templates/claude/commands/trellis/check-backend.md +13 -0
- package/dist/templates/claude/commands/trellis/check-cross-layer.md +153 -0
- package/dist/templates/claude/commands/trellis/check-frontend.md +13 -0
- package/dist/templates/claude/commands/trellis/create-command.md +154 -0
- package/dist/templates/claude/commands/trellis/finish-work.md +129 -0
- package/dist/templates/claude/commands/trellis/integrate-skill.md +219 -0
- package/dist/templates/claude/commands/trellis/onboard.md +358 -0
- package/dist/templates/claude/commands/trellis/parallel.md +193 -0
- package/dist/templates/claude/commands/trellis/record-session.md +62 -0
- package/dist/templates/claude/commands/trellis/start.md +280 -0
- package/dist/templates/claude/commands/trellis/update-spec.md +285 -0
- package/dist/templates/claude/hooks/inject-subagent-context.py +772 -0
- package/dist/templates/claude/hooks/ralph-loop.py +388 -0
- package/dist/templates/claude/hooks/session-start.py +142 -0
- package/dist/templates/claude/index.d.ts +54 -0
- package/dist/templates/claude/index.d.ts.map +1 -0
- package/dist/templates/claude/index.js +85 -0
- package/dist/templates/claude/index.js.map +1 -0
- package/dist/templates/claude/settings.json +41 -0
- package/dist/templates/extract.d.ts +68 -0
- package/dist/templates/extract.d.ts.map +1 -0
- package/dist/templates/extract.js +128 -0
- package/dist/templates/extract.js.map +1 -0
- package/dist/templates/markdown/agents.md +25 -0
- package/dist/templates/markdown/gitignore.txt +12 -0
- package/dist/templates/markdown/index.d.ts +32 -0
- package/dist/templates/markdown/index.d.ts.map +1 -0
- package/dist/templates/markdown/index.js +58 -0
- package/dist/templates/markdown/index.js.map +1 -0
- package/dist/templates/markdown/spec/backend/database-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/backend/directory-structure.md.txt +54 -0
- package/dist/templates/markdown/spec/backend/error-handling.md.txt +51 -0
- package/dist/templates/markdown/spec/backend/index.md +40 -0
- package/dist/templates/markdown/spec/backend/index.md.txt +38 -0
- package/dist/templates/markdown/spec/backend/logging-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/backend/quality-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/backend/script-conventions.md +467 -0
- package/dist/templates/markdown/spec/frontend/component-guidelines.md.txt +59 -0
- package/dist/templates/markdown/spec/frontend/directory-structure.md.txt +54 -0
- package/dist/templates/markdown/spec/frontend/hook-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/index.md.txt +39 -0
- package/dist/templates/markdown/spec/frontend/quality-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/state-management.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/type-safety.md.txt +51 -0
- package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md +118 -0
- package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md.txt +92 -0
- package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +94 -0
- package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md +394 -0
- package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +319 -0
- package/dist/templates/markdown/spec/guides/index.md.txt +89 -0
- package/dist/templates/markdown/spec/story/character.md.txt +95 -0
- package/dist/templates/markdown/spec/story/index.md.txt +31 -0
- package/dist/templates/markdown/spec/story/script.md.txt +313 -0
- package/dist/templates/markdown/spec/story/world.md.txt +92 -0
- package/dist/templates/markdown/workspace-index.md +123 -0
- package/dist/templates/markdown/worktree.yaml.txt +58 -0
- package/dist/templates/trellis/gitignore.txt +29 -0
- package/dist/templates/trellis/index.d.ts +49 -0
- package/dist/templates/trellis/index.d.ts.map +1 -0
- package/dist/templates/trellis/index.js +92 -0
- package/dist/templates/trellis/index.js.map +1 -0
- package/dist/templates/trellis/scripts/__init__.py +5 -0
- package/dist/templates/trellis/scripts/add_session.py +392 -0
- package/dist/templates/trellis/scripts/common/__init__.py +80 -0
- package/dist/templates/trellis/scripts/common/cli_adapter.py +435 -0
- package/dist/templates/trellis/scripts/common/developer.py +190 -0
- package/dist/templates/trellis/scripts/common/git_context.py +383 -0
- package/dist/templates/trellis/scripts/common/paths.py +347 -0
- package/dist/templates/trellis/scripts/common/phase.py +253 -0
- package/dist/templates/trellis/scripts/common/registry.py +366 -0
- package/dist/templates/trellis/scripts/common/task_queue.py +255 -0
- package/dist/templates/trellis/scripts/common/task_utils.py +178 -0
- package/dist/templates/trellis/scripts/common/worktree.py +219 -0
- package/dist/templates/trellis/scripts/create_bootstrap.py +290 -0
- package/dist/templates/trellis/scripts/get_context.py +16 -0
- package/dist/templates/trellis/scripts/get_developer.py +26 -0
- package/dist/templates/trellis/scripts/init_developer.py +51 -0
- package/dist/templates/trellis/scripts/multi_agent/__init__.py +5 -0
- package/dist/templates/trellis/scripts/multi_agent/cleanup.py +403 -0
- package/dist/templates/trellis/scripts/multi_agent/create_pr.py +329 -0
- package/dist/templates/trellis/scripts/multi_agent/plan.py +233 -0
- package/dist/templates/trellis/scripts/multi_agent/start.py +461 -0
- package/dist/templates/trellis/scripts/multi_agent/status.py +817 -0
- package/dist/templates/trellis/scripts/task.py +1056 -0
- package/dist/templates/trellis/scripts-shell-archive/add-session.sh +384 -0
- package/dist/templates/trellis/scripts-shell-archive/common/developer.sh +129 -0
- package/dist/templates/trellis/scripts-shell-archive/common/git-context.sh +263 -0
- package/dist/templates/trellis/scripts-shell-archive/common/paths.sh +208 -0
- package/dist/templates/trellis/scripts-shell-archive/common/phase.sh +150 -0
- package/dist/templates/trellis/scripts-shell-archive/common/registry.sh +247 -0
- package/dist/templates/trellis/scripts-shell-archive/common/task-queue.sh +142 -0
- package/dist/templates/trellis/scripts-shell-archive/common/task-utils.sh +151 -0
- package/dist/templates/trellis/scripts-shell-archive/common/worktree.sh +128 -0
- package/dist/templates/trellis/scripts-shell-archive/create-bootstrap.sh +299 -0
- package/dist/templates/trellis/scripts-shell-archive/get-context.sh +7 -0
- package/dist/templates/trellis/scripts-shell-archive/get-developer.sh +15 -0
- package/dist/templates/trellis/scripts-shell-archive/init-developer.sh +34 -0
- package/dist/templates/trellis/scripts-shell-archive/multi-agent/cleanup.sh +396 -0
- package/dist/templates/trellis/scripts-shell-archive/multi-agent/create-pr.sh +241 -0
- package/dist/templates/trellis/scripts-shell-archive/multi-agent/plan.sh +207 -0
- package/dist/templates/trellis/scripts-shell-archive/multi-agent/start.sh +317 -0
- package/dist/templates/trellis/scripts-shell-archive/multi-agent/status.sh +828 -0
- package/dist/templates/trellis/scripts-shell-archive/task.sh +1204 -0
- package/dist/templates/trellis/tasks/.gitkeep +0 -0
- package/dist/templates/trellis/workflow.md +416 -0
- package/dist/templates/trellis/worktree.yaml +47 -0
- package/dist/types/ai-tools.d.ts +48 -0
- package/dist/types/ai-tools.d.ts.map +1 -0
- package/dist/types/ai-tools.js +32 -0
- package/dist/types/ai-tools.js.map +1 -0
- package/dist/types/migration.d.ts +86 -0
- package/dist/types/migration.d.ts.map +1 -0
- package/dist/types/migration.js +8 -0
- package/dist/types/migration.js.map +1 -0
- package/dist/utils/compare-versions.d.ts +12 -0
- package/dist/utils/compare-versions.d.ts.map +1 -0
- package/dist/utils/compare-versions.js +76 -0
- package/dist/utils/compare-versions.js.map +1 -0
- package/dist/utils/file-writer.d.ts +23 -0
- package/dist/utils/file-writer.d.ts.map +1 -0
- package/dist/utils/file-writer.js +140 -0
- package/dist/utils/file-writer.js.map +1 -0
- package/dist/utils/project-detector.d.ts +16 -0
- package/dist/utils/project-detector.d.ts.map +1 -0
- package/dist/utils/project-detector.js +188 -0
- package/dist/utils/project-detector.js.map +1 -0
- package/dist/utils/template-fetcher.d.ts +51 -0
- package/dist/utils/template-fetcher.d.ts.map +1 -0
- package/dist/utils/template-fetcher.js +174 -0
- package/dist/utils/template-fetcher.js.map +1 -0
- package/dist/utils/template-hash.d.ts +78 -0
- package/dist/utils/template-hash.d.ts.map +1 -0
- package/dist/utils/template-hash.js +239 -0
- package/dist/utils/template-hash.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Create Bootstrap Task for First-Time Setup
|
|
3
|
+
#
|
|
4
|
+
# Creates a guided task to help users fill in project guidelines
|
|
5
|
+
# after initializing Trellis for the first time.
|
|
6
|
+
#
|
|
7
|
+
# Usage:
|
|
8
|
+
# ./.aim-studio/scripts/create-bootstrap.sh [project-type]
|
|
9
|
+
#
|
|
10
|
+
# Arguments:
|
|
11
|
+
# project-type: frontend | backend | fullstack (default: fullstack)
|
|
12
|
+
#
|
|
13
|
+
# Prerequisites:
|
|
14
|
+
# - .aim-studio/.developer must exist (run init-developer.sh first)
|
|
15
|
+
#
|
|
16
|
+
# Creates:
|
|
17
|
+
# .aim-studio/tasks/00-bootstrap-guidelines/
|
|
18
|
+
# ├── task.json # Task metadata
|
|
19
|
+
# └── prd.md # Task description and guidance
|
|
20
|
+
|
|
21
|
+
set -e
|
|
22
|
+
|
|
23
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
24
|
+
source "$SCRIPT_DIR/common/paths.sh"
|
|
25
|
+
source "$SCRIPT_DIR/common/developer.sh"
|
|
26
|
+
|
|
27
|
+
# Colors
|
|
28
|
+
RED='\033[0;31m'
|
|
29
|
+
GREEN='\033[0;32m'
|
|
30
|
+
YELLOW='\033[1;33m'
|
|
31
|
+
BLUE='\033[0;34m'
|
|
32
|
+
NC='\033[0m'
|
|
33
|
+
|
|
34
|
+
TASK_NAME="00-bootstrap-guidelines"
|
|
35
|
+
|
|
36
|
+
# Project type (default: fullstack)
|
|
37
|
+
PROJECT_TYPE="${1:-fullstack}"
|
|
38
|
+
|
|
39
|
+
# Validate project type
|
|
40
|
+
case "$PROJECT_TYPE" in
|
|
41
|
+
frontend|backend|fullstack)
|
|
42
|
+
;;
|
|
43
|
+
*)
|
|
44
|
+
echo -e "${YELLOW}Unknown project type: $PROJECT_TYPE, defaulting to fullstack${NC}"
|
|
45
|
+
PROJECT_TYPE="fullstack"
|
|
46
|
+
;;
|
|
47
|
+
esac
|
|
48
|
+
|
|
49
|
+
# =============================================================================
|
|
50
|
+
# PRD Content
|
|
51
|
+
# =============================================================================
|
|
52
|
+
|
|
53
|
+
write_prd_header() {
|
|
54
|
+
cat << 'EOF'
|
|
55
|
+
# Bootstrap: Fill Project Development Guidelines
|
|
56
|
+
|
|
57
|
+
## Purpose
|
|
58
|
+
|
|
59
|
+
Welcome to Trellis! This is your first task.
|
|
60
|
+
|
|
61
|
+
AI agents use `.aim-studio/spec/` to understand YOUR project's coding conventions.
|
|
62
|
+
**Empty templates = AI writes generic code that doesn't match your project style.**
|
|
63
|
+
|
|
64
|
+
Filling these guidelines is a one-time setup that pays off for every future AI session.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Your Task
|
|
69
|
+
|
|
70
|
+
Fill in the guideline files based on your **existing codebase**.
|
|
71
|
+
EOF
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
write_prd_backend_section() {
|
|
75
|
+
cat << 'EOF'
|
|
76
|
+
|
|
77
|
+
### Backend Guidelines
|
|
78
|
+
|
|
79
|
+
| File | What to Document |
|
|
80
|
+
|------|------------------|
|
|
81
|
+
| `.aim-studio/spec/backend/directory-structure.md` | Where different file types go (routes, services, utils) |
|
|
82
|
+
| `.aim-studio/spec/backend/database-guidelines.md` | ORM, migrations, query patterns, naming conventions |
|
|
83
|
+
| `.aim-studio/spec/backend/error-handling.md` | How errors are caught, logged, and returned |
|
|
84
|
+
| `.aim-studio/spec/backend/logging-guidelines.md` | Log levels, format, what to log |
|
|
85
|
+
| `.aim-studio/spec/backend/quality-guidelines.md` | Code review standards, testing requirements |
|
|
86
|
+
EOF
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
write_prd_frontend_section() {
|
|
90
|
+
cat << 'EOF'
|
|
91
|
+
|
|
92
|
+
### Frontend Guidelines
|
|
93
|
+
|
|
94
|
+
| File | What to Document |
|
|
95
|
+
|------|------------------|
|
|
96
|
+
| `.aim-studio/spec/frontend/directory-structure.md` | Component/page/hook organization |
|
|
97
|
+
| `.aim-studio/spec/frontend/component-guidelines.md` | Component patterns, props conventions |
|
|
98
|
+
| `.aim-studio/spec/frontend/hook-guidelines.md` | Custom hook naming, patterns |
|
|
99
|
+
| `.aim-studio/spec/frontend/state-management.md` | State library, patterns, what goes where |
|
|
100
|
+
| `.aim-studio/spec/frontend/type-safety.md` | TypeScript conventions, type organization |
|
|
101
|
+
| `.aim-studio/spec/frontend/quality-guidelines.md` | Linting, testing, accessibility |
|
|
102
|
+
EOF
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
write_prd_footer() {
|
|
106
|
+
cat << 'EOF'
|
|
107
|
+
|
|
108
|
+
### Thinking Guides (Optional)
|
|
109
|
+
|
|
110
|
+
The `.aim-studio/spec/guides/` directory contains thinking guides that are already
|
|
111
|
+
filled with general best practices. You can customize them for your project if needed.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## How to Fill Guidelines
|
|
116
|
+
|
|
117
|
+
### Principle: Document Reality, Not Ideals
|
|
118
|
+
|
|
119
|
+
Write what your codebase **actually does**, not what you wish it did.
|
|
120
|
+
AI needs to match existing patterns, not introduce new ones.
|
|
121
|
+
|
|
122
|
+
### Steps
|
|
123
|
+
|
|
124
|
+
1. **Look at existing code** - Find 2-3 examples of each pattern
|
|
125
|
+
2. **Document the pattern** - Describe what you see
|
|
126
|
+
3. **Include file paths** - Reference real files as examples
|
|
127
|
+
4. **List anti-patterns** - What does your team avoid?
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Tips for Using AI
|
|
132
|
+
|
|
133
|
+
Ask AI to help analyze your codebase:
|
|
134
|
+
|
|
135
|
+
- "Look at my codebase and document the patterns you see"
|
|
136
|
+
- "Analyze my code structure and summarize the conventions"
|
|
137
|
+
- "Find error handling patterns and document them"
|
|
138
|
+
|
|
139
|
+
The AI will read your code and help you document it.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Completion Checklist
|
|
144
|
+
|
|
145
|
+
- [ ] Guidelines filled for your project type
|
|
146
|
+
- [ ] At least 2-3 real code examples in each guideline
|
|
147
|
+
- [ ] Anti-patterns documented
|
|
148
|
+
|
|
149
|
+
When done:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
./.aim-studio/scripts/task.sh finish
|
|
153
|
+
./.aim-studio/scripts/task.sh archive 00-bootstrap-guidelines
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Why This Matters
|
|
159
|
+
|
|
160
|
+
After completing this task:
|
|
161
|
+
|
|
162
|
+
1. AI will write code that matches your project style
|
|
163
|
+
2. Relevant `/trellis:before-*-dev` commands will inject real context
|
|
164
|
+
3. `/trellis:check-*` commands will validate against your actual standards
|
|
165
|
+
4. Future developers (human or AI) will onboard faster
|
|
166
|
+
EOF
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
write_prd() {
|
|
170
|
+
local dir="$1"
|
|
171
|
+
local project_type="$2"
|
|
172
|
+
|
|
173
|
+
{
|
|
174
|
+
write_prd_header
|
|
175
|
+
|
|
176
|
+
case "$project_type" in
|
|
177
|
+
frontend)
|
|
178
|
+
write_prd_frontend_section
|
|
179
|
+
;;
|
|
180
|
+
backend)
|
|
181
|
+
write_prd_backend_section
|
|
182
|
+
;;
|
|
183
|
+
fullstack)
|
|
184
|
+
write_prd_backend_section
|
|
185
|
+
write_prd_frontend_section
|
|
186
|
+
;;
|
|
187
|
+
esac
|
|
188
|
+
|
|
189
|
+
write_prd_footer
|
|
190
|
+
} > "$dir/prd.md"
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
# =============================================================================
|
|
194
|
+
# Task JSON
|
|
195
|
+
# =============================================================================
|
|
196
|
+
|
|
197
|
+
write_task_json() {
|
|
198
|
+
local dir="$1"
|
|
199
|
+
local developer="$2"
|
|
200
|
+
local project_type="$3"
|
|
201
|
+
local today=$(date +%Y-%m-%d)
|
|
202
|
+
|
|
203
|
+
# Generate subtasks based on project type
|
|
204
|
+
local subtasks
|
|
205
|
+
local related_files
|
|
206
|
+
|
|
207
|
+
case "$project_type" in
|
|
208
|
+
frontend)
|
|
209
|
+
subtasks='[
|
|
210
|
+
{"name": "Fill frontend guidelines", "status": "pending"},
|
|
211
|
+
{"name": "Add code examples", "status": "pending"}
|
|
212
|
+
]'
|
|
213
|
+
related_files='[
|
|
214
|
+
".aim-studio/spec/frontend/"
|
|
215
|
+
]'
|
|
216
|
+
;;
|
|
217
|
+
backend)
|
|
218
|
+
subtasks='[
|
|
219
|
+
{"name": "Fill backend guidelines", "status": "pending"},
|
|
220
|
+
{"name": "Add code examples", "status": "pending"}
|
|
221
|
+
]'
|
|
222
|
+
related_files='[
|
|
223
|
+
".aim-studio/spec/backend/"
|
|
224
|
+
]'
|
|
225
|
+
;;
|
|
226
|
+
fullstack)
|
|
227
|
+
subtasks='[
|
|
228
|
+
{"name": "Fill backend guidelines", "status": "pending"},
|
|
229
|
+
{"name": "Fill frontend guidelines", "status": "pending"},
|
|
230
|
+
{"name": "Add code examples", "status": "pending"}
|
|
231
|
+
]'
|
|
232
|
+
related_files='[
|
|
233
|
+
".aim-studio/spec/backend/",
|
|
234
|
+
".aim-studio/spec/frontend/"
|
|
235
|
+
]'
|
|
236
|
+
;;
|
|
237
|
+
esac
|
|
238
|
+
|
|
239
|
+
cat > "$dir/task.json" << EOF
|
|
240
|
+
{
|
|
241
|
+
"id": "$TASK_NAME",
|
|
242
|
+
"name": "Bootstrap Guidelines",
|
|
243
|
+
"description": "Fill in project development guidelines for AI agents",
|
|
244
|
+
"status": "in_progress",
|
|
245
|
+
"dev_type": "docs",
|
|
246
|
+
"priority": "P1",
|
|
247
|
+
"creator": "$developer",
|
|
248
|
+
"assignee": "$developer",
|
|
249
|
+
"createdAt": "$today",
|
|
250
|
+
"completedAt": null,
|
|
251
|
+
"commit": null,
|
|
252
|
+
"subtasks": $subtasks,
|
|
253
|
+
"relatedFiles": $related_files,
|
|
254
|
+
"notes": "First-time setup task created by trellis init ($project_type project)"
|
|
255
|
+
}
|
|
256
|
+
EOF
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
# =============================================================================
|
|
260
|
+
# Main
|
|
261
|
+
# =============================================================================
|
|
262
|
+
|
|
263
|
+
main() {
|
|
264
|
+
local repo_root=$(get_repo_root)
|
|
265
|
+
local developer=$(get_developer "$repo_root")
|
|
266
|
+
|
|
267
|
+
# Check developer initialized
|
|
268
|
+
if [[ -z "$developer" ]]; then
|
|
269
|
+
echo -e "${RED}Error: Developer not initialized${NC}"
|
|
270
|
+
echo "Run: ./$DIR_WORKFLOW/$DIR_SCRIPTS/init-developer.sh <your-name>"
|
|
271
|
+
exit 1
|
|
272
|
+
fi
|
|
273
|
+
|
|
274
|
+
local tasks_dir=$(get_tasks_dir "$repo_root")
|
|
275
|
+
local task_dir="$tasks_dir/$TASK_NAME"
|
|
276
|
+
local relative_path="$DIR_WORKFLOW/$DIR_TASKS/$TASK_NAME"
|
|
277
|
+
|
|
278
|
+
# Check if already exists
|
|
279
|
+
if [[ -d "$task_dir" ]]; then
|
|
280
|
+
echo -e "${YELLOW}Bootstrap task already exists: $relative_path${NC}"
|
|
281
|
+
exit 0
|
|
282
|
+
fi
|
|
283
|
+
|
|
284
|
+
# Create task directory
|
|
285
|
+
mkdir -p "$task_dir"
|
|
286
|
+
|
|
287
|
+
# Write files
|
|
288
|
+
write_task_json "$task_dir" "$developer" "$PROJECT_TYPE"
|
|
289
|
+
write_prd "$task_dir" "$PROJECT_TYPE"
|
|
290
|
+
|
|
291
|
+
# Set as current task
|
|
292
|
+
set_current_task "$relative_path" "$repo_root"
|
|
293
|
+
|
|
294
|
+
# Silent output - init command handles user-facing messages
|
|
295
|
+
# Only output the task path for programmatic use
|
|
296
|
+
echo "$relative_path"
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
main "$@"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Get current developer name
|
|
3
|
+
#
|
|
4
|
+
# This is a wrapper that uses common/paths.sh
|
|
5
|
+
|
|
6
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
7
|
+
source "$SCRIPT_DIR/common/paths.sh"
|
|
8
|
+
|
|
9
|
+
developer=$(get_developer)
|
|
10
|
+
if [[ -n "$developer" ]]; then
|
|
11
|
+
echo "$developer"
|
|
12
|
+
else
|
|
13
|
+
echo "Developer not initialized" >&2
|
|
14
|
+
exit 1
|
|
15
|
+
fi
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Initialize developer for workflow
|
|
3
|
+
#
|
|
4
|
+
# Usage:
|
|
5
|
+
# ./.aim-studio/scripts/init-developer.sh <developer-name>
|
|
6
|
+
#
|
|
7
|
+
# This creates:
|
|
8
|
+
# - .aim-studio/.developer file with developer info
|
|
9
|
+
# - .aim-studio/workspace/<name>/ directory structure
|
|
10
|
+
|
|
11
|
+
set -e
|
|
12
|
+
|
|
13
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
14
|
+
source "$SCRIPT_DIR/common/paths.sh"
|
|
15
|
+
source "$SCRIPT_DIR/common/developer.sh"
|
|
16
|
+
|
|
17
|
+
if [[ -z "$1" ]]; then
|
|
18
|
+
echo "Usage: $0 <developer-name>"
|
|
19
|
+
echo ""
|
|
20
|
+
echo "Example:"
|
|
21
|
+
echo " $0 john"
|
|
22
|
+
exit 1
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
# Check if already initialized
|
|
26
|
+
existing=$(get_developer)
|
|
27
|
+
if [[ -n "$existing" ]]; then
|
|
28
|
+
echo "Developer already initialized: $existing"
|
|
29
|
+
echo ""
|
|
30
|
+
echo "To reinitialize, remove $DIR_WORKFLOW/$FILE_DEVELOPER first"
|
|
31
|
+
exit 0
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
init_developer "$1"
|