@prmichaelsen/acp-visualizer 0.1.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/README.md +68 -0
- package/agent/commands/acp.clarification-address.md +417 -0
- package/agent/commands/acp.clarification-capture.md +386 -0
- package/agent/commands/acp.clarification-create.md +437 -0
- package/agent/commands/acp.clarifications-research.md +326 -0
- package/agent/commands/acp.command-create.md +432 -0
- package/agent/commands/acp.design-create.md +286 -0
- package/agent/commands/acp.design-reference.md +355 -0
- package/agent/commands/acp.handoff.md +270 -0
- package/agent/commands/acp.index.md +423 -0
- package/agent/commands/acp.init.md +546 -0
- package/agent/commands/acp.package-create.md +895 -0
- package/agent/commands/acp.package-info.md +212 -0
- package/agent/commands/acp.package-install.md +539 -0
- package/agent/commands/acp.package-list.md +280 -0
- package/agent/commands/acp.package-publish.md +541 -0
- package/agent/commands/acp.package-remove.md +293 -0
- package/agent/commands/acp.package-search.md +307 -0
- package/agent/commands/acp.package-update.md +361 -0
- package/agent/commands/acp.package-validate.md +540 -0
- package/agent/commands/acp.pattern-create.md +386 -0
- package/agent/commands/acp.plan.md +587 -0
- package/agent/commands/acp.proceed.md +882 -0
- package/agent/commands/acp.project-create.md +675 -0
- package/agent/commands/acp.project-info.md +312 -0
- package/agent/commands/acp.project-list.md +226 -0
- package/agent/commands/acp.project-remove.md +379 -0
- package/agent/commands/acp.project-set.md +227 -0
- package/agent/commands/acp.project-update.md +307 -0
- package/agent/commands/acp.projects-restore.md +228 -0
- package/agent/commands/acp.projects-sync.md +347 -0
- package/agent/commands/acp.report.md +407 -0
- package/agent/commands/acp.resume.md +239 -0
- package/agent/commands/acp.sessions.md +301 -0
- package/agent/commands/acp.status.md +293 -0
- package/agent/commands/acp.sync.md +364 -0
- package/agent/commands/acp.task-create.md +500 -0
- package/agent/commands/acp.update.md +302 -0
- package/agent/commands/acp.validate.md +466 -0
- package/agent/commands/acp.version-check-for-updates.md +276 -0
- package/agent/commands/acp.version-check.md +191 -0
- package/agent/commands/acp.version-update.md +289 -0
- package/agent/commands/command.template.md +339 -0
- package/agent/commands/git.commit.md +526 -0
- package/agent/commands/git.init.md +514 -0
- package/agent/commands/tanstack-cloudflare.deploy.md +272 -0
- package/agent/commands/tanstack-cloudflare.tail.md +275 -0
- package/agent/design/.gitkeep +0 -0
- package/agent/design/design.template.md +154 -0
- package/agent/design/local.dashboard-layout-routing.md +288 -0
- package/agent/design/local.data-model-yaml-parsing.md +310 -0
- package/agent/design/local.search-filtering.md +331 -0
- package/agent/design/local.server-api-auto-refresh.md +235 -0
- package/agent/design/local.table-tree-views.md +299 -0
- package/agent/design/local.visualizer-requirements.md +349 -0
- package/agent/design/requirements.template.md +387 -0
- package/agent/index/.gitkeep +0 -0
- package/agent/index/acp.core.yaml +137 -0
- package/agent/index/local.main.template.yaml +37 -0
- package/agent/manifest.template.yaml +13 -0
- package/agent/manifest.yaml +302 -0
- package/agent/milestones/.gitkeep +0 -0
- package/agent/milestones/milestone-1-project-scaffold-data-pipeline.md +67 -0
- package/agent/milestones/milestone-1-{title}.template.md +206 -0
- package/agent/milestones/milestone-2-dashboard-views-interaction.md +79 -0
- package/agent/package.template.yaml +86 -0
- package/agent/patterns/.gitkeep +0 -0
- package/agent/patterns/bootstrap.template.md +1237 -0
- package/agent/patterns/pattern.template.md +382 -0
- package/agent/patterns/tanstack-cloudflare.acl-permissions.md +332 -0
- package/agent/patterns/tanstack-cloudflare.action-bar-item.md +416 -0
- package/agent/patterns/tanstack-cloudflare.api-route-handlers.md +401 -0
- package/agent/patterns/tanstack-cloudflare.auth-session-management.md +387 -0
- package/agent/patterns/tanstack-cloudflare.card-and-list.md +271 -0
- package/agent/patterns/tanstack-cloudflare.chat-engine.md +353 -0
- package/agent/patterns/tanstack-cloudflare.confirmation-tokens.md +346 -0
- package/agent/patterns/tanstack-cloudflare.durable-objects-websocket.md +516 -0
- package/agent/patterns/tanstack-cloudflare.email-service.md +431 -0
- package/agent/patterns/tanstack-cloudflare.expander.md +98 -0
- package/agent/patterns/tanstack-cloudflare.fcm-push.md +115 -0
- package/agent/patterns/tanstack-cloudflare.firebase-anonymous-sessions.md +441 -0
- package/agent/patterns/tanstack-cloudflare.firebase-auth.md +348 -0
- package/agent/patterns/tanstack-cloudflare.firebase-firestore.md +550 -0
- package/agent/patterns/tanstack-cloudflare.firebase-storage.md +369 -0
- package/agent/patterns/tanstack-cloudflare.form-controls.md +145 -0
- package/agent/patterns/tanstack-cloudflare.global-search-context.md +93 -0
- package/agent/patterns/tanstack-cloudflare.image-carousel.md +126 -0
- package/agent/patterns/tanstack-cloudflare.library-services.md +553 -0
- package/agent/patterns/tanstack-cloudflare.lightbox.md +169 -0
- package/agent/patterns/tanstack-cloudflare.markdown-content.md +115 -0
- package/agent/patterns/tanstack-cloudflare.mention-suggestions.md +98 -0
- package/agent/patterns/tanstack-cloudflare.modal.md +156 -0
- package/agent/patterns/tanstack-cloudflare.nextjs-to-tanstack-routing.md +461 -0
- package/agent/patterns/tanstack-cloudflare.notifications-engine.md +151 -0
- package/agent/patterns/tanstack-cloudflare.oauth-token-refresh.md +90 -0
- package/agent/patterns/tanstack-cloudflare.og-metadata.md +296 -0
- package/agent/patterns/tanstack-cloudflare.pagination.md +442 -0
- package/agent/patterns/tanstack-cloudflare.pill-input.md +220 -0
- package/agent/patterns/tanstack-cloudflare.provider-adapter.md +401 -0
- package/agent/patterns/tanstack-cloudflare.rate-limiting.md +323 -0
- package/agent/patterns/tanstack-cloudflare.scheduled-tasks.md +338 -0
- package/agent/patterns/tanstack-cloudflare.searchable-settings.md +375 -0
- package/agent/patterns/tanstack-cloudflare.slide-over.md +129 -0
- package/agent/patterns/tanstack-cloudflare.ssr-preload.md +571 -0
- package/agent/patterns/tanstack-cloudflare.third-party-api-integration.md +508 -0
- package/agent/patterns/tanstack-cloudflare.toast-system.md +142 -0
- package/agent/patterns/tanstack-cloudflare.unified-header.md +280 -0
- package/agent/patterns/tanstack-cloudflare.user-scoped-collections.md +628 -0
- package/agent/patterns/tanstack-cloudflare.websocket-manager.md +237 -0
- package/agent/patterns/tanstack-cloudflare.wrangler-configuration.md +358 -0
- package/agent/patterns/tanstack-cloudflare.zod-schema-validation.md +336 -0
- package/agent/progress.template.yaml +161 -0
- package/agent/progress.yaml +145 -0
- package/agent/schemas/package.schema.yaml +276 -0
- package/agent/scripts/acp.common.sh +1781 -0
- package/agent/scripts/acp.install.sh +333 -0
- package/agent/scripts/acp.package-create.sh +924 -0
- package/agent/scripts/acp.package-info.sh +288 -0
- package/agent/scripts/acp.package-install.sh +893 -0
- package/agent/scripts/acp.package-list.sh +311 -0
- package/agent/scripts/acp.package-publish.sh +420 -0
- package/agent/scripts/acp.package-remove.sh +348 -0
- package/agent/scripts/acp.package-search.sh +156 -0
- package/agent/scripts/acp.package-update.sh +517 -0
- package/agent/scripts/acp.package-validate.sh +1018 -0
- package/agent/scripts/acp.uninstall.sh +85 -0
- package/agent/scripts/acp.version-check-for-updates.sh +98 -0
- package/agent/scripts/acp.version-check.sh +47 -0
- package/agent/scripts/acp.version-update.sh +176 -0
- package/agent/scripts/acp.yaml-parser.sh +985 -0
- package/agent/scripts/acp.yaml-validate.sh +205 -0
- package/agent/tasks/.gitkeep +0 -0
- package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-1-initialize-tanstack-start-project.md +210 -0
- package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-2-implement-data-model-yaml-parser.md +294 -0
- package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-3-build-server-api-data-loading.md +193 -0
- package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-4-add-auto-refresh-sse.md +262 -0
- package/agent/tasks/milestone-2-dashboard-views-interaction/task-10-polish-integration-testing.md +156 -0
- package/agent/tasks/milestone-2-dashboard-views-interaction/task-5-build-dashboard-layout-routing.md +178 -0
- package/agent/tasks/milestone-2-dashboard-views-interaction/task-6-build-overview-page.md +141 -0
- package/agent/tasks/milestone-2-dashboard-views-interaction/task-7-implement-milestone-table-view.md +153 -0
- package/agent/tasks/milestone-2-dashboard-views-interaction/task-8-implement-milestone-tree-view.md +174 -0
- package/agent/tasks/milestone-2-dashboard-views-interaction/task-9-implement-search-filtering.md +233 -0
- package/agent/tasks/task-1-{title}.template.md +244 -0
- package/bin/visualize.mjs +84 -0
- package/package.json +48 -0
- package/src/components/ExtraFieldsBadge.tsx +15 -0
- package/src/components/FilterBar.tsx +33 -0
- package/src/components/Header.tsx +23 -0
- package/src/components/MilestoneTable.tsx +167 -0
- package/src/components/MilestoneTree.tsx +84 -0
- package/src/components/ProgressBar.tsx +20 -0
- package/src/components/SearchInput.tsx +22 -0
- package/src/components/Sidebar.tsx +54 -0
- package/src/components/StatusBadge.tsx +23 -0
- package/src/components/StatusDot.tsx +12 -0
- package/src/components/TaskList.tsx +36 -0
- package/src/components/ViewToggle.tsx +31 -0
- package/src/lib/config.ts +8 -0
- package/src/lib/file-watcher.ts +43 -0
- package/src/lib/search.ts +48 -0
- package/src/lib/types.ts +73 -0
- package/src/lib/useAutoRefresh.ts +31 -0
- package/src/lib/useCollapse.ts +31 -0
- package/src/lib/useFilteredData.ts +55 -0
- package/src/lib/yaml-loader-real.spec.ts +47 -0
- package/src/lib/yaml-loader.spec.ts +201 -0
- package/src/lib/yaml-loader.ts +265 -0
- package/src/routeTree.gen.ts +140 -0
- package/src/router.tsx +10 -0
- package/src/routes/__root.tsx +75 -0
- package/src/routes/api/watch.ts +29 -0
- package/src/routes/index.tsx +115 -0
- package/src/routes/milestones.tsx +50 -0
- package/src/routes/search.tsx +84 -0
- package/src/routes/tasks.tsx +63 -0
- package/src/services/progress-database.service.ts +46 -0
- package/src/styles.css +25 -0
- package/tsconfig.json +24 -0
- package/vite.config.ts +16 -0
- package/vitest.config.ts +27 -0
|
@@ -0,0 +1,924 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# ACP Package Creator v2.1.0
|
|
4
|
+
# Creates a new ACP package with full ACP installation
|
|
5
|
+
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
# Source common utilities
|
|
9
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
10
|
+
. "${SCRIPT_DIR}/acp.common.sh"
|
|
11
|
+
|
|
12
|
+
# Initialize colors
|
|
13
|
+
init_colors
|
|
14
|
+
|
|
15
|
+
# Parse command-line arguments
|
|
16
|
+
PACKAGE_NAME=""
|
|
17
|
+
DESCRIPTION=""
|
|
18
|
+
AUTHOR=""
|
|
19
|
+
LICENSE="MIT"
|
|
20
|
+
HOMEPAGE=""
|
|
21
|
+
REPO_URL=""
|
|
22
|
+
TAGS_INPUT=""
|
|
23
|
+
RELEASE_BRANCH="main"
|
|
24
|
+
TARGET_DIR=""
|
|
25
|
+
|
|
26
|
+
# Show usage
|
|
27
|
+
show_usage() {
|
|
28
|
+
echo "Usage: $0 [OPTIONS]"
|
|
29
|
+
echo ""
|
|
30
|
+
echo "Create a new ACP package with full ACP installation."
|
|
31
|
+
echo ""
|
|
32
|
+
echo "Options:"
|
|
33
|
+
echo " --name NAME Package name (required, lowercase, hyphens allowed)"
|
|
34
|
+
echo " --description DESC Package description (required)"
|
|
35
|
+
echo " --author AUTHOR Author name (required)"
|
|
36
|
+
echo " --license LICENSE License (default: MIT)"
|
|
37
|
+
echo " --homepage URL Homepage URL (optional)"
|
|
38
|
+
echo " --repository URL Git repository URL (required)"
|
|
39
|
+
echo " --tags TAGS Comma-separated tags (optional)"
|
|
40
|
+
echo " --branch BRANCH Release branch (default: main)"
|
|
41
|
+
echo " --target-dir DIR Target directory (default: ~/.acp/projects/acp-NAME)"
|
|
42
|
+
echo " -h, --help Show this help message"
|
|
43
|
+
echo ""
|
|
44
|
+
echo "Modes:"
|
|
45
|
+
echo " Interactive: Run without arguments, prompts for all information"
|
|
46
|
+
echo " Non-interactive: Provide all required arguments (--name, --description, --author, --repository)"
|
|
47
|
+
echo ""
|
|
48
|
+
echo "Examples:"
|
|
49
|
+
echo " # Interactive mode (prompts for all information)"
|
|
50
|
+
echo " $0"
|
|
51
|
+
echo ""
|
|
52
|
+
echo " # Non-interactive mode (all required parameters provided)"
|
|
53
|
+
echo " $0 --name test-package \\"
|
|
54
|
+
echo " --description \"Test package for ACP\" \\"
|
|
55
|
+
echo " --author \"Your Name\" \\"
|
|
56
|
+
echo " --repository \"https://github.com/user/acp-test-package.git\" \\"
|
|
57
|
+
echo " --tags \"test,example\""
|
|
58
|
+
echo ""
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
# Parse arguments
|
|
62
|
+
while [[ $# -gt 0 ]]; do
|
|
63
|
+
case $1 in
|
|
64
|
+
--name)
|
|
65
|
+
PACKAGE_NAME="$2"
|
|
66
|
+
shift 2
|
|
67
|
+
;;
|
|
68
|
+
--description)
|
|
69
|
+
DESCRIPTION="$2"
|
|
70
|
+
shift 2
|
|
71
|
+
;;
|
|
72
|
+
--author)
|
|
73
|
+
AUTHOR="$2"
|
|
74
|
+
shift 2
|
|
75
|
+
;;
|
|
76
|
+
--license)
|
|
77
|
+
LICENSE="$2"
|
|
78
|
+
shift 2
|
|
79
|
+
;;
|
|
80
|
+
--homepage)
|
|
81
|
+
HOMEPAGE="$2"
|
|
82
|
+
shift 2
|
|
83
|
+
;;
|
|
84
|
+
--repository)
|
|
85
|
+
REPO_URL="$2"
|
|
86
|
+
shift 2
|
|
87
|
+
;;
|
|
88
|
+
--tags)
|
|
89
|
+
TAGS_INPUT="$2"
|
|
90
|
+
shift 2
|
|
91
|
+
;;
|
|
92
|
+
--branch)
|
|
93
|
+
RELEASE_BRANCH="$2"
|
|
94
|
+
shift 2
|
|
95
|
+
;;
|
|
96
|
+
--target-dir)
|
|
97
|
+
TARGET_DIR="$2"
|
|
98
|
+
shift 2
|
|
99
|
+
;;
|
|
100
|
+
-h|--help)
|
|
101
|
+
show_usage
|
|
102
|
+
exit 0
|
|
103
|
+
;;
|
|
104
|
+
*)
|
|
105
|
+
echo "${RED}Error: Unknown option: $1${NC}"
|
|
106
|
+
echo ""
|
|
107
|
+
show_usage
|
|
108
|
+
exit 1
|
|
109
|
+
;;
|
|
110
|
+
esac
|
|
111
|
+
done
|
|
112
|
+
|
|
113
|
+
# Detect if running in non-interactive mode (all required args provided)
|
|
114
|
+
NON_INTERACTIVE=false
|
|
115
|
+
if [ -n "$PACKAGE_NAME" ] && [ -n "$DESCRIPTION" ] && [ -n "$AUTHOR" ] && [ -n "$REPO_URL" ]; then
|
|
116
|
+
NON_INTERACTIVE=true
|
|
117
|
+
fi
|
|
118
|
+
|
|
119
|
+
echo "${BLUE}📦 ACP Package Creator${NC}"
|
|
120
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
121
|
+
echo ""
|
|
122
|
+
|
|
123
|
+
if [ "$NON_INTERACTIVE" = false ]; then
|
|
124
|
+
echo "Let's create a new ACP package!"
|
|
125
|
+
echo ""
|
|
126
|
+
|
|
127
|
+
# Step 1: Gather package information
|
|
128
|
+
echo "${BOLD}Package Information${NC}"
|
|
129
|
+
echo ""
|
|
130
|
+
fi
|
|
131
|
+
|
|
132
|
+
# Package name
|
|
133
|
+
if [ -z "$PACKAGE_NAME" ]; then
|
|
134
|
+
read -p "Package name (lowercase, no spaces): " PACKAGE_NAME
|
|
135
|
+
fi
|
|
136
|
+
if [ -z "$PACKAGE_NAME" ]; then
|
|
137
|
+
echo "${RED}Error: Package name is required${NC}"
|
|
138
|
+
exit 1
|
|
139
|
+
fi
|
|
140
|
+
|
|
141
|
+
# Validate package name (lowercase, alphanumeric, hyphens only)
|
|
142
|
+
if ! echo "$PACKAGE_NAME" | grep -qE '^[a-z0-9-]+$'; then
|
|
143
|
+
echo "${RED}Error: Package name must be lowercase letters, numbers, and hyphens only${NC}"
|
|
144
|
+
exit 1
|
|
145
|
+
fi
|
|
146
|
+
|
|
147
|
+
# Check for reserved names
|
|
148
|
+
if [ "$PACKAGE_NAME" = "acp" ] || [ "$PACKAGE_NAME" = "local" ] || [ "$PACKAGE_NAME" = "core" ] || [ "$PACKAGE_NAME" = "system" ] || [ "$PACKAGE_NAME" = "global" ]; then
|
|
149
|
+
echo "${RED}Error: Package name '${PACKAGE_NAME}' is reserved${NC}"
|
|
150
|
+
echo "Reserved names: acp, local, core, system, global"
|
|
151
|
+
exit 1
|
|
152
|
+
fi
|
|
153
|
+
|
|
154
|
+
# Description
|
|
155
|
+
if [ -z "$DESCRIPTION" ]; then
|
|
156
|
+
read -p "Description: " DESCRIPTION
|
|
157
|
+
fi
|
|
158
|
+
if [ -z "$DESCRIPTION" ]; then
|
|
159
|
+
echo "${RED}Error: Description is required${NC}"
|
|
160
|
+
exit 1
|
|
161
|
+
fi
|
|
162
|
+
|
|
163
|
+
# Author
|
|
164
|
+
if [ -z "$AUTHOR" ]; then
|
|
165
|
+
read -p "Author name: " AUTHOR
|
|
166
|
+
fi
|
|
167
|
+
if [ -z "$AUTHOR" ]; then
|
|
168
|
+
echo "${RED}Error: Author name is required${NC}"
|
|
169
|
+
exit 1
|
|
170
|
+
fi
|
|
171
|
+
|
|
172
|
+
# License
|
|
173
|
+
if [ -z "$LICENSE" ]; then
|
|
174
|
+
LICENSE="MIT"
|
|
175
|
+
fi
|
|
176
|
+
if [ "$NON_INTERACTIVE" = false ]; then
|
|
177
|
+
read -p "License [MIT]: " LICENSE_INPUT
|
|
178
|
+
LICENSE=${LICENSE_INPUT:-MIT}
|
|
179
|
+
fi
|
|
180
|
+
|
|
181
|
+
# Homepage
|
|
182
|
+
if [ "$NON_INTERACTIVE" = false ] && [ -z "$HOMEPAGE" ]; then
|
|
183
|
+
read -p "Homepage URL (optional): " HOMEPAGE
|
|
184
|
+
fi
|
|
185
|
+
|
|
186
|
+
# Repository URL
|
|
187
|
+
if [ -z "$REPO_URL" ]; then
|
|
188
|
+
read -p "Repository URL (e.g., https://github.com/username/acp-${PACKAGE_NAME}.git): " REPO_URL
|
|
189
|
+
fi
|
|
190
|
+
if [ -z "$REPO_URL" ]; then
|
|
191
|
+
echo "${RED}Error: Repository URL is required${NC}"
|
|
192
|
+
exit 1
|
|
193
|
+
fi
|
|
194
|
+
|
|
195
|
+
# Ensure repository URL ends with .git
|
|
196
|
+
if [[ ! "$REPO_URL" =~ \.git$ ]]; then
|
|
197
|
+
REPO_URL="${REPO_URL}.git"
|
|
198
|
+
echo "${YELLOW}Note: Added .git suffix to repository URL: ${REPO_URL}${NC}"
|
|
199
|
+
fi
|
|
200
|
+
|
|
201
|
+
# Tags
|
|
202
|
+
if [ "$NON_INTERACTIVE" = false ] && [ -z "$TAGS_INPUT" ]; then
|
|
203
|
+
read -p "Tags (comma-separated): " TAGS_INPUT
|
|
204
|
+
fi
|
|
205
|
+
|
|
206
|
+
# Convert tags to array
|
|
207
|
+
IFS=',' read -ra TAGS_ARRAY <<< "$TAGS_INPUT"
|
|
208
|
+
|
|
209
|
+
# Release branch
|
|
210
|
+
if [ "$NON_INTERACTIVE" = false ]; then
|
|
211
|
+
read -p "Release branch [main]: " RELEASE_BRANCH_INPUT
|
|
212
|
+
RELEASE_BRANCH=${RELEASE_BRANCH_INPUT:-main}
|
|
213
|
+
fi
|
|
214
|
+
|
|
215
|
+
# Target directory (optional)
|
|
216
|
+
# Default: ~/.acp/projects/acp-{package-name}
|
|
217
|
+
DEFAULT_TARGET_DIR="$HOME/.acp/projects/acp-${PACKAGE_NAME}"
|
|
218
|
+
if [ "$NON_INTERACTIVE" = false ] && [ -z "$TARGET_DIR" ]; then
|
|
219
|
+
read -p "Target directory [${DEFAULT_TARGET_DIR}]: " TARGET_DIR
|
|
220
|
+
fi
|
|
221
|
+
|
|
222
|
+
# Expand path (handle ~, $HOME, and relative paths)
|
|
223
|
+
if [ -z "$TARGET_DIR" ]; then
|
|
224
|
+
TARGET_DIR="$DEFAULT_TARGET_DIR"
|
|
225
|
+
else
|
|
226
|
+
# Expand ~ to home directory
|
|
227
|
+
TARGET_DIR="${TARGET_DIR/#\~/$HOME}"
|
|
228
|
+
# Expand $HOME
|
|
229
|
+
TARGET_DIR=$(eval echo "$TARGET_DIR")
|
|
230
|
+
fi
|
|
231
|
+
|
|
232
|
+
echo ""
|
|
233
|
+
echo "${GREEN}✓${NC} Package information collected"
|
|
234
|
+
echo ""
|
|
235
|
+
|
|
236
|
+
# Initialize global infrastructure if creating in ~/.acp/projects/
|
|
237
|
+
if [[ "$TARGET_DIR" == "$HOME/.acp/projects/"* ]] || [[ "$TARGET_DIR" == ~/.acp/projects/* ]]; then
|
|
238
|
+
init_global_acp || {
|
|
239
|
+
echo "${RED}Error: Failed to initialize global infrastructure${NC}" >&2
|
|
240
|
+
exit 1
|
|
241
|
+
}
|
|
242
|
+
fi
|
|
243
|
+
|
|
244
|
+
# Display summary
|
|
245
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
246
|
+
echo ""
|
|
247
|
+
echo "${BOLD}Creating new ACP package: ${PACKAGE_NAME}${NC}"
|
|
248
|
+
echo ""
|
|
249
|
+
echo "Package name: ${PACKAGE_NAME}"
|
|
250
|
+
echo "Description: ${DESCRIPTION}"
|
|
251
|
+
echo "Author: ${AUTHOR}"
|
|
252
|
+
echo "License: ${LICENSE}"
|
|
253
|
+
echo "Homepage: ${HOMEPAGE}"
|
|
254
|
+
echo "Repository: ${REPO_URL}"
|
|
255
|
+
echo "Tags: ${TAGS_INPUT}"
|
|
256
|
+
echo "Release branch: ${RELEASE_BRANCH}"
|
|
257
|
+
echo "Target: ${TARGET_DIR}"
|
|
258
|
+
echo ""
|
|
259
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
260
|
+
echo ""
|
|
261
|
+
|
|
262
|
+
# Step 2: Create directory structure
|
|
263
|
+
PACKAGE_DIR="${TARGET_DIR}"
|
|
264
|
+
|
|
265
|
+
# Expand to absolute path if relative
|
|
266
|
+
if [[ "$PACKAGE_DIR" != /* ]]; then
|
|
267
|
+
PACKAGE_DIR="$(pwd)/$PACKAGE_DIR"
|
|
268
|
+
fi
|
|
269
|
+
|
|
270
|
+
# Check if directory already exists
|
|
271
|
+
if [ -d "$PACKAGE_DIR" ]; then
|
|
272
|
+
echo "${RED}Error: Directory $PACKAGE_DIR already exists${NC}"
|
|
273
|
+
exit 1
|
|
274
|
+
fi
|
|
275
|
+
|
|
276
|
+
echo "${BOLD}Creating Directory Structure${NC}"
|
|
277
|
+
echo ""
|
|
278
|
+
|
|
279
|
+
mkdir -p "$PACKAGE_DIR"
|
|
280
|
+
|
|
281
|
+
echo "${GREEN}✓${NC} Created directory: $PACKAGE_DIR/"
|
|
282
|
+
echo ""
|
|
283
|
+
|
|
284
|
+
# Step 3: Install full ACP
|
|
285
|
+
echo "${BOLD}Installing ACP${NC}"
|
|
286
|
+
echo ""
|
|
287
|
+
|
|
288
|
+
# Change to package directory
|
|
289
|
+
cd "$PACKAGE_DIR"
|
|
290
|
+
|
|
291
|
+
# Run ACP installation script
|
|
292
|
+
if [ -f "${SCRIPT_DIR}/acp.install.sh" ]; then
|
|
293
|
+
# Run install script (it will create agent/ structure and install all files)
|
|
294
|
+
bash "${SCRIPT_DIR}/acp.install.sh"
|
|
295
|
+
echo ""
|
|
296
|
+
else
|
|
297
|
+
echo "${RED}Error: acp.install.sh not found${NC}"
|
|
298
|
+
exit 1
|
|
299
|
+
fi
|
|
300
|
+
|
|
301
|
+
echo "${GREEN}✓${NC} ACP installed successfully"
|
|
302
|
+
echo "${GREEN}✓${NC} All templates and commands available"
|
|
303
|
+
echo ""
|
|
304
|
+
|
|
305
|
+
# Step 3.5: Create local-only directories with .gitkeep files
|
|
306
|
+
echo "${BOLD}Creating Local Directories${NC}"
|
|
307
|
+
echo ""
|
|
308
|
+
|
|
309
|
+
# Create clarifications directory with .gitkeep
|
|
310
|
+
mkdir -p agent/clarifications
|
|
311
|
+
touch agent/clarifications/.gitkeep
|
|
312
|
+
|
|
313
|
+
# Create feedback directory with .gitkeep
|
|
314
|
+
mkdir -p agent/feedback
|
|
315
|
+
touch agent/feedback/.gitkeep
|
|
316
|
+
|
|
317
|
+
# Copy clarification template from ACP installation
|
|
318
|
+
if [ -f "${SCRIPT_DIR}/../clarifications/clarification-{N}-{title}.template.md" ]; then
|
|
319
|
+
cp "${SCRIPT_DIR}/../clarifications/clarification-{N}-{title}.template.md" agent/clarifications/
|
|
320
|
+
echo "${GREEN}✓${NC} Created agent/clarifications/ with .gitkeep and template"
|
|
321
|
+
else
|
|
322
|
+
echo "${YELLOW}⚠${NC} Created agent/clarifications/ with .gitkeep (template not found)"
|
|
323
|
+
fi
|
|
324
|
+
|
|
325
|
+
echo "${GREEN}✓${NC} Created agent/feedback/ with .gitkeep"
|
|
326
|
+
echo ""
|
|
327
|
+
|
|
328
|
+
# Step 4: Create package.yaml
|
|
329
|
+
echo "${BOLD}Creating package.yaml${NC}"
|
|
330
|
+
echo ""
|
|
331
|
+
|
|
332
|
+
# Convert tags array to YAML list
|
|
333
|
+
TAGS_YAML=""
|
|
334
|
+
for tag in "${TAGS_ARRAY[@]}"; do
|
|
335
|
+
# Trim whitespace
|
|
336
|
+
tag=$(echo "$tag" | xargs)
|
|
337
|
+
TAGS_YAML="${TAGS_YAML} - ${tag}\n"
|
|
338
|
+
done
|
|
339
|
+
|
|
340
|
+
# Create package.yaml with release branch configuration
|
|
341
|
+
cat > "package.yaml" << EOF
|
|
342
|
+
# package.yaml
|
|
343
|
+
name: ${PACKAGE_NAME}
|
|
344
|
+
version: 1.0.0
|
|
345
|
+
description: ${DESCRIPTION}
|
|
346
|
+
author: ${AUTHOR}
|
|
347
|
+
license: ${LICENSE}
|
|
348
|
+
homepage: ${HOMEPAGE}
|
|
349
|
+
repository: ${REPO_URL}
|
|
350
|
+
|
|
351
|
+
# Release configuration
|
|
352
|
+
release:
|
|
353
|
+
branch: ${RELEASE_BRANCH}
|
|
354
|
+
|
|
355
|
+
# Package contents
|
|
356
|
+
# Add files here as you create them
|
|
357
|
+
# Use @acp.pattern-create, @acp.command-create, @acp.design-create
|
|
358
|
+
# These commands automatically update this section
|
|
359
|
+
contents:
|
|
360
|
+
patterns: []
|
|
361
|
+
|
|
362
|
+
commands: []
|
|
363
|
+
|
|
364
|
+
designs: []
|
|
365
|
+
|
|
366
|
+
# Compatibility
|
|
367
|
+
requires:
|
|
368
|
+
acp: >=2.8.0
|
|
369
|
+
|
|
370
|
+
# Tags for discovery
|
|
371
|
+
tags:
|
|
372
|
+
$(echo -e "$TAGS_YAML")
|
|
373
|
+
EOF
|
|
374
|
+
|
|
375
|
+
echo "${GREEN}✓${NC} Created package.yaml"
|
|
376
|
+
echo "${GREEN}✓${NC} Configured release branch: ${RELEASE_BRANCH}"
|
|
377
|
+
echo ""
|
|
378
|
+
|
|
379
|
+
# Step 4.5: Create progress.yaml for package development
|
|
380
|
+
echo "${BOLD}Creating Progress Tracking${NC}"
|
|
381
|
+
echo ""
|
|
382
|
+
|
|
383
|
+
CURRENT_DATE=$(date +%Y-%m-%d)
|
|
384
|
+
|
|
385
|
+
cat > "agent/progress.yaml" << EOF
|
|
386
|
+
# Package Development Progress Tracking
|
|
387
|
+
# ACP Package: ${PACKAGE_NAME}
|
|
388
|
+
|
|
389
|
+
project:
|
|
390
|
+
name: ${PACKAGE_NAME}
|
|
391
|
+
version: 1.0.0
|
|
392
|
+
type: package
|
|
393
|
+
started: ${CURRENT_DATE}
|
|
394
|
+
status: in_progress
|
|
395
|
+
current_milestone: null
|
|
396
|
+
description: |
|
|
397
|
+
ACP Package: ${DESCRIPTION}
|
|
398
|
+
|
|
399
|
+
milestones: []
|
|
400
|
+
|
|
401
|
+
tasks: {}
|
|
402
|
+
|
|
403
|
+
documentation:
|
|
404
|
+
design_documents: 0
|
|
405
|
+
milestone_documents: 0
|
|
406
|
+
pattern_documents: 0
|
|
407
|
+
task_documents: 0
|
|
408
|
+
command_documents: 0
|
|
409
|
+
last_updated: ${CURRENT_DATE}
|
|
410
|
+
|
|
411
|
+
progress:
|
|
412
|
+
planning: 0
|
|
413
|
+
implementation: 0
|
|
414
|
+
testing: 0
|
|
415
|
+
documentation: 0
|
|
416
|
+
overall: 0
|
|
417
|
+
|
|
418
|
+
recent_work:
|
|
419
|
+
- date: ${CURRENT_DATE}
|
|
420
|
+
description: |
|
|
421
|
+
📦 Package Created: ${PACKAGE_NAME}
|
|
422
|
+
Initial package structure created. Ready for content development.
|
|
423
|
+
items:
|
|
424
|
+
- ✅ Created package.yaml with metadata
|
|
425
|
+
- ✅ Installed full ACP (templates, commands, scripts)
|
|
426
|
+
- ✅ Created README.md, LICENSE, CHANGELOG.md
|
|
427
|
+
- ✅ Initialized git repository
|
|
428
|
+
- ✅ Installed pre-commit hook
|
|
429
|
+
- ✅ Created progress.yaml for development tracking
|
|
430
|
+
- 📋 Ready to add content with entity creation commands
|
|
431
|
+
|
|
432
|
+
next_steps:
|
|
433
|
+
- Add patterns using @acp.pattern-create
|
|
434
|
+
- Add commands using @acp.command-create
|
|
435
|
+
- Add designs using @acp.design-create
|
|
436
|
+
- Create milestones and tasks as needed
|
|
437
|
+
- Validate package with @acp.package-validate
|
|
438
|
+
- Publish with @acp.package-publish
|
|
439
|
+
|
|
440
|
+
notes:
|
|
441
|
+
- This is an ACP package repository
|
|
442
|
+
- Use entity creation commands to add content
|
|
443
|
+
- Create milestones and tasks as you plan development
|
|
444
|
+
- progress.yaml is for development only (not installed to user projects)
|
|
445
|
+
|
|
446
|
+
current_blockers: []
|
|
447
|
+
|
|
448
|
+
team:
|
|
449
|
+
- role: Package Author
|
|
450
|
+
name: ${AUTHOR}
|
|
451
|
+
focus: |
|
|
452
|
+
Developing ${PACKAGE_NAME} package
|
|
453
|
+
EOF
|
|
454
|
+
|
|
455
|
+
echo "${GREEN}✓${NC} Created progress.yaml for package development tracking"
|
|
456
|
+
echo ""
|
|
457
|
+
|
|
458
|
+
# Step 5: Create README.md
|
|
459
|
+
echo "${BOLD}Creating Documentation${NC}"
|
|
460
|
+
echo ""
|
|
461
|
+
|
|
462
|
+
cat > "README.md" << EOF
|
|
463
|
+
# ACP Package: ${PACKAGE_NAME}
|
|
464
|
+
|
|
465
|
+
${DESCRIPTION}
|
|
466
|
+
|
|
467
|
+
> **This package is designed for use with the [Agent Context Protocol](https://github.com/prmichaelsen/agent-context-protocol). Read more about ACP [here](https://github.com/prmichaelsen/agent-context-protocol).**
|
|
468
|
+
|
|
469
|
+
## Installation
|
|
470
|
+
|
|
471
|
+
### Quick Start (Bootstrap New Project)
|
|
472
|
+
|
|
473
|
+
Install ACP and this package in one command:
|
|
474
|
+
|
|
475
|
+
\`\`\`bash
|
|
476
|
+
curl -fsSL ${REPO_URL%.git}/raw/${RELEASE_BRANCH}/agent/scripts/bootstrap.sh | bash
|
|
477
|
+
\`\`\`
|
|
478
|
+
|
|
479
|
+
This will:
|
|
480
|
+
1. Install ACP if not already installed
|
|
481
|
+
2. Install this package
|
|
482
|
+
3. Initialize your project with ACP
|
|
483
|
+
|
|
484
|
+
### Install Package Only (ACP Already Installed)
|
|
485
|
+
|
|
486
|
+
If you already have ACP installed in your project:
|
|
487
|
+
|
|
488
|
+
\`\`\`bash
|
|
489
|
+
@acp.package-install ${REPO_URL}
|
|
490
|
+
\`\`\`
|
|
491
|
+
|
|
492
|
+
Or using the installation script:
|
|
493
|
+
|
|
494
|
+
\`\`\`bash
|
|
495
|
+
./agent/scripts/acp.package-install.sh ${REPO_URL}
|
|
496
|
+
\`\`\`
|
|
497
|
+
|
|
498
|
+
## What's Included
|
|
499
|
+
|
|
500
|
+
<!-- ACP_AUTO_UPDATE_START:CONTENTS -->
|
|
501
|
+
### Commands
|
|
502
|
+
|
|
503
|
+
(No commands yet - use @acp.command-create to add commands)
|
|
504
|
+
|
|
505
|
+
### Patterns
|
|
506
|
+
|
|
507
|
+
(No patterns yet - use @acp.pattern-create to add patterns)
|
|
508
|
+
|
|
509
|
+
### Designs
|
|
510
|
+
|
|
511
|
+
(No designs yet - use @acp.design-create to add designs)
|
|
512
|
+
<!-- ACP_AUTO_UPDATE_END:CONTENTS -->
|
|
513
|
+
|
|
514
|
+
## Why Use This Package
|
|
515
|
+
|
|
516
|
+
(Add benefits and use cases here)
|
|
517
|
+
|
|
518
|
+
## Usage
|
|
519
|
+
|
|
520
|
+
(Add usage examples here)
|
|
521
|
+
|
|
522
|
+
## Development
|
|
523
|
+
|
|
524
|
+
### Setup
|
|
525
|
+
|
|
526
|
+
1. Clone this repository
|
|
527
|
+
2. Make changes
|
|
528
|
+
3. Run \`@acp.package-validate\` to validate
|
|
529
|
+
4. Run \`@acp.package-publish\` to publish
|
|
530
|
+
|
|
531
|
+
### Adding New Content
|
|
532
|
+
|
|
533
|
+
- Use \`@acp.pattern-create\` to create patterns
|
|
534
|
+
- Use \`@acp.command-create\` to create commands
|
|
535
|
+
- Use \`@acp.design-create\` to create designs
|
|
536
|
+
|
|
537
|
+
These commands automatically:
|
|
538
|
+
- Add namespace prefix to filenames
|
|
539
|
+
- Update package.yaml contents section
|
|
540
|
+
- Update this README.md
|
|
541
|
+
|
|
542
|
+
### Testing
|
|
543
|
+
|
|
544
|
+
Run \`@acp.package-validate\` to validate your package locally.
|
|
545
|
+
|
|
546
|
+
### Publishing
|
|
547
|
+
|
|
548
|
+
Run \`@acp.package-publish\` to publish updates. This will:
|
|
549
|
+
- Validate the package
|
|
550
|
+
- Detect version bump from commits
|
|
551
|
+
- Update CHANGELOG.md
|
|
552
|
+
- Create git tag
|
|
553
|
+
- Push to remote
|
|
554
|
+
- Test installation
|
|
555
|
+
|
|
556
|
+
## Namespace Convention
|
|
557
|
+
|
|
558
|
+
All files in this package use the \`${PACKAGE_NAME}\` namespace:
|
|
559
|
+
- Commands: \`${PACKAGE_NAME}.command-name.md\`
|
|
560
|
+
- Patterns: \`${PACKAGE_NAME}.pattern-name.md\`
|
|
561
|
+
- Designs: \`${PACKAGE_NAME}.design-name.md\`
|
|
562
|
+
|
|
563
|
+
## Dependencies
|
|
564
|
+
|
|
565
|
+
(List any required packages or project dependencies here)
|
|
566
|
+
|
|
567
|
+
## Local Development Directories
|
|
568
|
+
|
|
569
|
+
This package includes local-only directories for development workflow:
|
|
570
|
+
|
|
571
|
+
### Clarifications (\`agent/clarifications/\`)
|
|
572
|
+
|
|
573
|
+
Use this directory to document questions and clarifications during development:
|
|
574
|
+
- Create clarification documents using the template: \`clarification-{N}-{title}.template.md\`
|
|
575
|
+
- Document requirements gaps, design questions, and implementation decisions
|
|
576
|
+
- **Local by default**: Content files are gitignored, only \`.gitkeep\` is tracked
|
|
577
|
+
- **Optional tracking**: Remove patterns from \`.gitignore\` to track specific clarifications
|
|
578
|
+
|
|
579
|
+
### Feedback (\`agent/feedback/\`)
|
|
580
|
+
|
|
581
|
+
Use this directory to capture feedback during development:
|
|
582
|
+
- Document user feedback, bug reports, and feature requests
|
|
583
|
+
- Keep notes about what works and what needs improvement
|
|
584
|
+
- **Local by default**: Content files are gitignored, only \`.gitkeep\` is tracked
|
|
585
|
+
- **Optional tracking**: Remove patterns from \`.gitignore\` to track specific feedback
|
|
586
|
+
|
|
587
|
+
### Reports (\`agent/reports/\`)
|
|
588
|
+
|
|
589
|
+
Session reports and development logs:
|
|
590
|
+
- Automatically generated by \`@acp.report\` command
|
|
591
|
+
- **Local by default**: Content files are gitignored, only \`.gitkeep\` is tracked
|
|
592
|
+
- **Optional tracking**: Remove patterns from \`.gitignore\` to track specific reports
|
|
593
|
+
|
|
594
|
+
**Note**: These directories follow the same pattern - they exist in the repository structure (via \`.gitkeep\`), but their content is local-only by default. You can choose to track specific files by removing them from \`.gitignore\`.
|
|
595
|
+
|
|
596
|
+
## Contributing
|
|
597
|
+
|
|
598
|
+
Contributions are welcome! Please:
|
|
599
|
+
|
|
600
|
+
1. Follow the existing pattern structure
|
|
601
|
+
2. Use entity creation commands (@acp.pattern-create, etc.)
|
|
602
|
+
3. Run @acp.package-validate before committing
|
|
603
|
+
4. Document your changes in CHANGELOG.md
|
|
604
|
+
5. Test installation before submitting
|
|
605
|
+
|
|
606
|
+
## License
|
|
607
|
+
|
|
608
|
+
${LICENSE}
|
|
609
|
+
|
|
610
|
+
## Author
|
|
611
|
+
|
|
612
|
+
${AUTHOR}
|
|
613
|
+
EOF
|
|
614
|
+
|
|
615
|
+
echo "${GREEN}✓${NC} Created README.md"
|
|
616
|
+
|
|
617
|
+
# Step 6: Create LICENSE
|
|
618
|
+
cat > "LICENSE" << 'EOF'
|
|
619
|
+
MIT License
|
|
620
|
+
|
|
621
|
+
Copyright (c) 2026
|
|
622
|
+
|
|
623
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
624
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
625
|
+
in the Software without restriction, including without limitation the rights
|
|
626
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
627
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
628
|
+
furnished to do so, subject to the following conditions:
|
|
629
|
+
|
|
630
|
+
The above copyright notice and this permission notice shall be included in all
|
|
631
|
+
copies or substantial portions of the Software.
|
|
632
|
+
|
|
633
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
634
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
635
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
636
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
637
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
638
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
639
|
+
SOFTWARE.
|
|
640
|
+
EOF
|
|
641
|
+
|
|
642
|
+
echo "${GREEN}✓${NC} Created LICENSE (MIT)"
|
|
643
|
+
|
|
644
|
+
# Step 7: Create CHANGELOG.md
|
|
645
|
+
CURRENT_DATE=$(date +%Y-%m-%d)
|
|
646
|
+
|
|
647
|
+
cat > "CHANGELOG.md" << EOF
|
|
648
|
+
# Changelog
|
|
649
|
+
|
|
650
|
+
All notable changes to this package will be documented in this file.
|
|
651
|
+
|
|
652
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
653
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
654
|
+
|
|
655
|
+
## [1.0.0] - ${CURRENT_DATE}
|
|
656
|
+
|
|
657
|
+
### Added
|
|
658
|
+
- Initial release
|
|
659
|
+
- Package structure created with full ACP installation
|
|
660
|
+
EOF
|
|
661
|
+
|
|
662
|
+
echo "${GREEN}✓${NC} Created CHANGELOG.md"
|
|
663
|
+
|
|
664
|
+
# Step 8: Create .gitignore (package-specific)
|
|
665
|
+
cat > ".gitignore" << 'EOF'
|
|
666
|
+
# OS files
|
|
667
|
+
.DS_Store
|
|
668
|
+
Thumbs.db
|
|
669
|
+
|
|
670
|
+
# Editor files
|
|
671
|
+
.vscode/
|
|
672
|
+
.idea/
|
|
673
|
+
*.swp
|
|
674
|
+
*.swo
|
|
675
|
+
|
|
676
|
+
# Temporary files
|
|
677
|
+
*.tmp
|
|
678
|
+
*.log
|
|
679
|
+
|
|
680
|
+
# Node modules (if applicable)
|
|
681
|
+
node_modules/
|
|
682
|
+
|
|
683
|
+
# Python (if applicable)
|
|
684
|
+
__pycache__/
|
|
685
|
+
*.pyc
|
|
686
|
+
.venv/
|
|
687
|
+
venv/
|
|
688
|
+
|
|
689
|
+
# Build artifacts
|
|
690
|
+
dist/
|
|
691
|
+
build/
|
|
692
|
+
|
|
693
|
+
# ACP local files (local by default, tracking optional)
|
|
694
|
+
# These directories exist with .gitkeep files, but content is gitignored
|
|
695
|
+
agent/clarifications/*.md
|
|
696
|
+
!agent/clarifications/*.template.md
|
|
697
|
+
agent/feedback/*.md
|
|
698
|
+
agent/reports/*.md
|
|
699
|
+
EOF
|
|
700
|
+
|
|
701
|
+
echo "${GREEN}✓${NC} Created .gitignore"
|
|
702
|
+
echo ""
|
|
703
|
+
|
|
704
|
+
# Step 8.5: Create bootstrap.sh script
|
|
705
|
+
mkdir -p agent/scripts
|
|
706
|
+
|
|
707
|
+
cat > "agent/scripts/bootstrap.sh" << 'BOOTSTRAP_EOF'
|
|
708
|
+
#!/bin/bash
|
|
709
|
+
# Bootstrap script for installing ACP and this package in one command
|
|
710
|
+
# Usage: curl -fsSL https://github.com/{owner}/{repo}/raw/{branch}/agent/scripts/bootstrap.sh | bash
|
|
711
|
+
|
|
712
|
+
set -e
|
|
713
|
+
|
|
714
|
+
# Colors
|
|
715
|
+
RED='\033[0;31m'
|
|
716
|
+
GREEN='\033[0;32m'
|
|
717
|
+
YELLOW='\033[1;33m'
|
|
718
|
+
BLUE='\033[0;34m'
|
|
719
|
+
BOLD='\033[1m'
|
|
720
|
+
NC='\033[0m'
|
|
721
|
+
|
|
722
|
+
echo ""
|
|
723
|
+
echo "${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
724
|
+
echo "${BOLD} ACP Package Bootstrap${NC}"
|
|
725
|
+
echo "${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
726
|
+
echo ""
|
|
727
|
+
|
|
728
|
+
# Check if ACP is already installed
|
|
729
|
+
if [ ! -f "AGENT.md" ] || [ ! -d "agent" ]; then
|
|
730
|
+
echo "${BLUE}Installing ACP...${NC}"
|
|
731
|
+
echo ""
|
|
732
|
+
|
|
733
|
+
# Install ACP
|
|
734
|
+
curl -fsSL https://raw.githubusercontent.com/prmichaelsen/agent-context-protocol/mainline/agent/scripts/acp.install.sh | bash
|
|
735
|
+
|
|
736
|
+
if [ $? -eq 0 ]; then
|
|
737
|
+
echo ""
|
|
738
|
+
echo "${GREEN}✓${NC} ACP installed successfully"
|
|
739
|
+
echo ""
|
|
740
|
+
else
|
|
741
|
+
echo ""
|
|
742
|
+
echo "${RED}✗${NC} ACP installation failed"
|
|
743
|
+
exit 1
|
|
744
|
+
fi
|
|
745
|
+
else
|
|
746
|
+
echo "${GREEN}✓${NC} ACP already installed"
|
|
747
|
+
echo ""
|
|
748
|
+
fi
|
|
749
|
+
|
|
750
|
+
# Install this package
|
|
751
|
+
BOOTSTRAP_EOF
|
|
752
|
+
|
|
753
|
+
# Add package-specific installation command
|
|
754
|
+
cat >> "agent/scripts/bootstrap.sh" << EOF
|
|
755
|
+
echo "\${BLUE}Installing ${PACKAGE_NAME} package...\${NC}"
|
|
756
|
+
echo ""
|
|
757
|
+
|
|
758
|
+
# Install package using acp.package-install.sh
|
|
759
|
+
if [ -f "./agent/scripts/acp.package-install.sh" ]; then
|
|
760
|
+
./agent/scripts/acp.package-install.sh ${REPO_URL}
|
|
761
|
+
|
|
762
|
+
if [ \$? -eq 0 ]; then
|
|
763
|
+
echo ""
|
|
764
|
+
echo "\${GREEN}✓\${NC} ${PACKAGE_NAME} package installed successfully"
|
|
765
|
+
echo ""
|
|
766
|
+
else
|
|
767
|
+
echo ""
|
|
768
|
+
echo "\${RED}✗\${NC} Package installation failed"
|
|
769
|
+
exit 1
|
|
770
|
+
fi
|
|
771
|
+
else
|
|
772
|
+
echo "\${RED}✗\${NC} ACP installation script not found"
|
|
773
|
+
echo "Please ensure ACP is properly installed"
|
|
774
|
+
exit 1
|
|
775
|
+
fi
|
|
776
|
+
|
|
777
|
+
echo ""
|
|
778
|
+
echo "\${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
|
|
779
|
+
echo "\${GREEN}✓\${NC} \${BOLD}Bootstrap Complete!\${NC}"
|
|
780
|
+
echo "\${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
|
|
781
|
+
echo ""
|
|
782
|
+
echo "Your project is now set up with:"
|
|
783
|
+
echo " • ACP (Agent Context Protocol)"
|
|
784
|
+
echo " • ${PACKAGE_NAME} package"
|
|
785
|
+
echo ""
|
|
786
|
+
echo "Next steps:"
|
|
787
|
+
echo " 1. Run: @acp.init"
|
|
788
|
+
echo " 2. Start working with your AI agent"
|
|
789
|
+
echo ""
|
|
790
|
+
EOF
|
|
791
|
+
|
|
792
|
+
chmod +x agent/scripts/bootstrap.sh
|
|
793
|
+
|
|
794
|
+
echo "${GREEN}✓${NC} Created agent/scripts/bootstrap.sh"
|
|
795
|
+
echo ""
|
|
796
|
+
|
|
797
|
+
# Step 9: Install pre-commit hook
|
|
798
|
+
echo "${BOLD}Installing Pre-Commit Hook${NC}"
|
|
799
|
+
echo ""
|
|
800
|
+
|
|
801
|
+
# Initialize git first (required for hook installation)
|
|
802
|
+
git init -q
|
|
803
|
+
|
|
804
|
+
# Install hook using common.sh function
|
|
805
|
+
if install_precommit_hook; then
|
|
806
|
+
echo "${GREEN}✓${NC} Validates package.yaml before commits"
|
|
807
|
+
else
|
|
808
|
+
echo "${YELLOW}⚠ Pre-commit hook installation failed (non-critical)${NC}"
|
|
809
|
+
fi
|
|
810
|
+
|
|
811
|
+
echo ""
|
|
812
|
+
|
|
813
|
+
# Step 10: Create initial commit
|
|
814
|
+
echo "${BOLD}Initializing Git Repository${NC}"
|
|
815
|
+
echo ""
|
|
816
|
+
|
|
817
|
+
git add .
|
|
818
|
+
git commit -q -m "chore: initialize ACP package with full installation"
|
|
819
|
+
|
|
820
|
+
echo "${GREEN}✓${NC} Initialized git repository"
|
|
821
|
+
echo "${GREEN}✓${NC} Created initial commit"
|
|
822
|
+
echo ""
|
|
823
|
+
|
|
824
|
+
# Step 11: Display success message and next steps
|
|
825
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
826
|
+
echo ""
|
|
827
|
+
echo "${GREEN}🎉 Package Created Successfully!${NC}"
|
|
828
|
+
echo ""
|
|
829
|
+
echo "Your ACP package is ready at: ${BOLD}${PACKAGE_DIR}${NC}"
|
|
830
|
+
echo ""
|
|
831
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
832
|
+
echo ""
|
|
833
|
+
echo "${BOLD}📋 Next Steps:${NC}"
|
|
834
|
+
echo ""
|
|
835
|
+
echo "1. ${BOLD}Add your content:${NC}"
|
|
836
|
+
echo " ${YELLOW}cd acp-${PACKAGE_NAME}${NC}"
|
|
837
|
+
echo " ${YELLOW}@acp.pattern-create${NC} # Create patterns"
|
|
838
|
+
echo " ${YELLOW}@acp.command-create${NC} # Create commands"
|
|
839
|
+
echo " ${YELLOW}@acp.design-create${NC} # Create designs"
|
|
840
|
+
echo ""
|
|
841
|
+
echo " These commands automatically:"
|
|
842
|
+
echo " - Add namespace prefix to filenames"
|
|
843
|
+
echo " - Update package.yaml contents section"
|
|
844
|
+
echo " - Update README.md \"What's Included\" section"
|
|
845
|
+
echo ""
|
|
846
|
+
echo "2. ${BOLD}Validate your package:${NC}"
|
|
847
|
+
echo " ${YELLOW}@acp.package-validate${NC}"
|
|
848
|
+
echo ""
|
|
849
|
+
echo " This checks:"
|
|
850
|
+
echo " - package.yaml structure"
|
|
851
|
+
echo " - File existence and namespace consistency"
|
|
852
|
+
echo " - Git repository setup"
|
|
853
|
+
echo " - README.md structure"
|
|
854
|
+
echo ""
|
|
855
|
+
echo "3. ${BOLD}Create GitHub repository:${NC}"
|
|
856
|
+
echo " - Go to https://github.com/new"
|
|
857
|
+
echo " - Name: ${YELLOW}acp-${PACKAGE_NAME}${NC}"
|
|
858
|
+
echo " - Description: ${DESCRIPTION}"
|
|
859
|
+
echo " - Create repository (public recommended)"
|
|
860
|
+
echo ""
|
|
861
|
+
echo "4. ${BOLD}Push to GitHub:${NC}"
|
|
862
|
+
echo " ${YELLOW}cd acp-${PACKAGE_NAME}"
|
|
863
|
+
echo " git remote add origin ${REPO_URL}"
|
|
864
|
+
echo " git branch -M ${RELEASE_BRANCH}"
|
|
865
|
+
echo " git push -u origin ${RELEASE_BRANCH}${NC}"
|
|
866
|
+
echo ""
|
|
867
|
+
echo "5. ${BOLD}Add GitHub topic for discoverability:${NC}"
|
|
868
|
+
echo " - Go to repository settings"
|
|
869
|
+
echo " - Add topic: ${YELLOW}acp-package${NC} (REQUIRED)"
|
|
870
|
+
echo " - Add other topics: ${TAGS_INPUT}"
|
|
871
|
+
echo ""
|
|
872
|
+
echo "6. ${BOLD}Publish your first version:${NC}"
|
|
873
|
+
echo " ${YELLOW}cd acp-${PACKAGE_NAME}"
|
|
874
|
+
echo " @acp.package-publish${NC}"
|
|
875
|
+
echo ""
|
|
876
|
+
echo " This will:"
|
|
877
|
+
echo " - Validate package"
|
|
878
|
+
echo " - Detect version bump from commits"
|
|
879
|
+
echo " - Update CHANGELOG.md"
|
|
880
|
+
echo " - Create git tag"
|
|
881
|
+
echo " - Push to remote"
|
|
882
|
+
echo " - Test installation"
|
|
883
|
+
echo ""
|
|
884
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
885
|
+
echo ""
|
|
886
|
+
echo "${BOLD}📚 Resources:${NC}"
|
|
887
|
+
echo ""
|
|
888
|
+
echo "- Package structure guide: See AGENT.md"
|
|
889
|
+
echo "- package.yaml reference: agent/design/acp-package-management-system.md"
|
|
890
|
+
echo "- Entity creation: @acp.pattern-create, @acp.command-create, @acp.design-create"
|
|
891
|
+
echo "- Validation: @acp.package-validate"
|
|
892
|
+
echo "- Publishing: @acp.package-publish"
|
|
893
|
+
echo ""
|
|
894
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
895
|
+
echo ""
|
|
896
|
+
echo "${GREEN}✅ Package creation complete!${NC}"
|
|
897
|
+
echo ""
|
|
898
|
+
echo "Your package has:"
|
|
899
|
+
echo " ${GREEN}✓${NC} Full ACP installation (all templates and commands)"
|
|
900
|
+
echo " ${GREEN}✓${NC} Pre-commit hook (validates package.yaml before commits)"
|
|
901
|
+
echo " ${GREEN}✓${NC} Release branch configured (${RELEASE_BRANCH})"
|
|
902
|
+
echo " ${GREEN}✓${NC} Git repository initialized"
|
|
903
|
+
echo " ${GREEN}✓${NC} Bootstrap script (agent/scripts/bootstrap.sh)"
|
|
904
|
+
echo " ${GREEN}✓${NC} Progress tracking (agent/progress.yaml)"
|
|
905
|
+
echo ""
|
|
906
|
+
echo "${BOLD}💡 Bootstrap Installation:${NC}"
|
|
907
|
+
echo ""
|
|
908
|
+
echo "Once published, users can install ACP + your package in one command:"
|
|
909
|
+
echo ""
|
|
910
|
+
echo " ${YELLOW}curl -fsSL ${REPO_URL%.git}/raw/${RELEASE_BRANCH}/agent/scripts/bootstrap.sh | bash${NC}"
|
|
911
|
+
echo ""
|
|
912
|
+
echo "This is perfect for bootstrapping new projects!"
|
|
913
|
+
echo ""
|
|
914
|
+
echo "${BOLD}💡 Progress Tracking:${NC}"
|
|
915
|
+
echo ""
|
|
916
|
+
echo "Use standard ACP commands to track package development:"
|
|
917
|
+
echo " ${YELLOW}@acp.init${NC} - Initialize context"
|
|
918
|
+
echo " ${YELLOW}@acp.status${NC} - Check development status"
|
|
919
|
+
echo " ${YELLOW}@acp.proceed${NC} - Work on tasks"
|
|
920
|
+
echo ""
|
|
921
|
+
echo "Create milestones and tasks as you plan development."
|
|
922
|
+
echo ""
|
|
923
|
+
echo "Ready to add content with @acp.pattern-create, @acp.command-create, @acp.design-create"
|
|
924
|
+
echo ""
|