-
Notifications
You must be signed in to change notification settings - Fork 1
chore(build): automate Speckit installation with Make targets #8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 16 commits
80daaf7
b3eb0ff
a8a230c
bc51661
cafa511
0b4eb1e
23952fb
4150d30
4117bce
b9eaae5
6fdfe60
363e3ee
8bc7db2
7ff8fb3
5e8ce01
aa9771c
3c0b814
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,63 @@ | ||||||||||||||
| .PHONY: spec-kit agent-os help init | ||||||||||||||
|
|
||||||||||||||
| .DEFAULT_GOAL := help | ||||||||||||||
|
|
||||||||||||||
| help: ## Show available commands | ||||||||||||||
| @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n\nTargets:\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) | ||||||||||||||
|
|
||||||||||||||
| spec-kit: ## Install spec-kit (default: claude) | ||||||||||||||
|
||||||||||||||
| @agent=$(word 2,$(MAKECMDGOALS)); \ | ||||||||||||||
| if [ -z "$$agent" ]; then \ | ||||||||||||||
| agent="claude"; \ | ||||||||||||||
| echo "Using default agent: claude"; \ | ||||||||||||||
| fi; \ | ||||||||||||||
|
Comment on lines
+9
to
+13
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The method of parsing arguments using |
||||||||||||||
| if ! command -v specify >/dev/null 2>&1; then \ | ||||||||||||||
| echo "[spec-kit] 'specify' not found."; \ | ||||||||||||||
| echo "RUN: uv tool install specify-cli --from git+https://github.com/github/spec-kit.git"; \ | ||||||||||||||
| exit 1; \ | ||||||||||||||
| fi; \ | ||||||||||||||
| yes | specify init --here --ai $$agent --script sh | ||||||||||||||
|
|
||||||||||||||
| agent-os: ## Install agent-os (default: claude) | ||||||||||||||
| @agent=$(word 2,$(MAKECMDGOALS)); \ | ||||||||||||||
| script="$$HOME/agent-os/scripts/project-install.sh"; \ | ||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The script path is hardcoded relative to |
||||||||||||||
| if [ -z "$$agent" ]; then \ | ||||||||||||||
| agent="claude"; \ | ||||||||||||||
| echo "Using default agent: claude"; \ | ||||||||||||||
| fi; \ | ||||||||||||||
| if [ ! -f "$$script" ]; then \ | ||||||||||||||
| echo "[agent-os] 'agent-os' not found."; \ | ||||||||||||||
| echo "RUN: curl -sSL https://raw.githubusercontent.com/buildermethods/agent-os/main/scripts/base-install.sh | bash"; \ | ||||||||||||||
| exit 1; \ | ||||||||||||||
| fi; \ | ||||||||||||||
| echo "Installing agent-os with agent: $$agent"; \ | ||||||||||||||
| if [ "$$agent" = "claude" ]; then \ | ||||||||||||||
| yes | bash "$$script"; \ | ||||||||||||||
| elif [ "$$agent" = "all" ]; then \ | ||||||||||||||
| yes | bash "$$script" --agent-os-commands true --standards-as-claude-code-skills true; \ | ||||||||||||||
| else \ | ||||||||||||||
| yes | bash "$$script" --claude-code-commands false --use-claude-code-subagents false --standards-as-claude-code-skills true --agent-os-commands true; \ | ||||||||||||||
| fi | ||||||||||||||
|
|
||||||||||||||
| init: ## Setup Project environment (Docker required) | ||||||||||||||
|
||||||||||||||
| @if ! command -v docker >/dev/null 2>&1; then \ | ||||||||||||||
| echo "[init] 'docker' not found"; \ | ||||||||||||||
| exit 1; \ | ||||||||||||||
| fi; \ | ||||||||||||||
| if ! docker compose version >/dev/null 2>&1; then \ | ||||||||||||||
| echo "[init] 'docker compose' not found"; \ | ||||||||||||||
| exit 1; \ | ||||||||||||||
| fi; \ | ||||||||||||||
| if [ ! -f .env ]; then \ | ||||||||||||||
| echo "Copying .env.example to .env"; \ | ||||||||||||||
| cp .env.example .env; \ | ||||||||||||||
| fi; \ | ||||||||||||||
| echo "Starting Docker containers"; \ | ||||||||||||||
| docker compose up -d; \ | ||||||||||||||
| echo "Installing npm packages"; \ | ||||||||||||||
| docker run --rm -v $$(pwd):/app -w /app node:22-alpine npm install; \ | ||||||||||||||
| echo "Running database migrations and seeders"; \ | ||||||||||||||
| docker compose exec laravel.test php artisan migrate --seed | ||||||||||||||
|
|
||||||||||||||
| %: | ||||||||||||||
|
||||||||||||||
| %: | |
| %: | |
| @if [ "$@" = "$(word 1,$(MAKECMDGOALS))" ]; then \ | |
| echo "make: *** No rule to make target '$@'."; \ | |
| exit 1; \ | |
| fi; \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This Makefile does not align with the functionality described in the pull request and documented in README.md. The README.md specifies speckit-install, speckit-init, speckit-check, and speckit-clean targets, but this file is missing most of them and contains unrelated targets (agent-os, init). The init target, for instance, appears to be for setting up a Laravel project. Please provide the correct Makefile that implements the documented speckit automation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The content of this Makefile does not align with the stated goal of this pull request, which is to add automation for speckit. The targets defined here (spec-kit, agent-os, init) appear to be for a different tool (spec-kit) and project (involving agent-os and Laravel). They do not match the speckit-* targets (speckit-install, speckit-init, etc.) described in the README.md and the pull request description. Please replace this with the correct Makefile content that implements the speckit automation.
| Original file line number | Diff line number | Diff line change | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1 +1,52 @@ | ||||||||||||||||
| # base | ||||||||||||||||
| # base | ||||||||||||||||
|
|
||||||||||||||||
| ## Speckit 사용 방법 / Quick Guide | ||||||||||||||||
|
|
||||||||||||||||
| Speckit CLI를 프로젝트 내에서 동일하게 사용할 수 있도록 Makefile로 래핑했습니다. Python 3와 make만 있으면 됩니다. | ||||||||||||||||
|
|
||||||||||||||||
| Speckit commands are wrapped in the Makefile so you can install and run them consistently with only Python 3 and make. | ||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
| ### 설치 | ||||||||||||||||
|
|
||||||||||||||||
| 로컬 가상환경(`.venv`)에 Speckit을 설치합니다. 필요 시 버전을 고정해 사용할 수 있습니다. | ||||||||||||||||
|
|
||||||||||||||||
| ```bash | ||||||||||||||||
| # 최신 버전 | ||||||||||||||||
| make speckit-install | ||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
| # 특정 버전 설치 | ||||||||||||||||
| SPECKIT_VERSION=0.2.0 make speckit-install | ||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
| # 최신 버전 | |
| make speckit-install | |
| # 특정 버전 설치 | |
| SPECKIT_VERSION=0.2.0 make speckit-install | |
| # 최신 버전 설치 (현재 Makefile은 항상 최신 버전을 설치합니다.) | |
| make speckit-install |
Copilot
AI
Jan 1, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The instruction to check available versions using pip index versions speckit is inconsistent with the actual installation method. The Makefile uses uv tool install from a GitHub repository, not pip from PyPI. This command won't help users find valid versions for the actual installation method being used.
| # 사용 가능한 버전 확인 (예시) | |
| pip index versions speckit | |
| # 사용 가능한 버전 확인 (예시): | |
| # Speckit GitHub 저장소의 Releases/Tags 페이지에서 사용할 버전을 확인하세요. |
Copilot
AI
Jan 1, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The documented target speckit-init does not exist in the Makefile. There is an init target, but it's for Docker/Laravel setup, not for Speckit initialization. The speckit-init target needs to be implemented.
| # 초기 설정 (예: 템플릿 생성) | |
| make speckit-init |
Copilot
AI
Jan 1, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The documented target speckit-check does not exist in the Makefile. This target needs to be implemented to match the documentation.
Copilot
AI
Jan 1, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The documented target speckit-clean does not exist in the Makefile. This target needs to be implemented to match the documentation.
| ### 정리 | |
| ```bash | |
| make speckit-clean | |
| ``` |
Copilot
AI
Jan 1, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The CI example uses make targets (speckit-install and speckit-check) that don't exist in the Makefile. This example will fail if users try to use it. The targets need to be implemented or the example needs to be updated to use the actual targets.
| - run: make speckit-install | |
| - run: make speckit-check | |
| - run: make install | |
| - run: make check |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
# First, let's find and examine the Makefile
find . -name "Makefile" -o -name "makefile" | head -20Repository: kimchanhyung98/base
Length of output: 73
🏁 Script executed:
# Also check the README structure
find . -name "README*" | head -20Repository: kimchanhyung98/base
Length of output: 74
🏁 Script executed:
cat -n ./MakefileRepository: kimchanhyung98/base
Length of output: 2808
🏁 Script executed:
head -52 ./README.mdRepository: kimchanhyung98/base
Length of output: 879
Update README to document actual Makefile targets.
The README documents make speckit-install, make speckit-init, make speckit-check, and make speckit-clean commands, but the Makefile implements only spec-kit, agent-os, init, and help targets. The README describes a Python venv-based Speckit workflow that no longer exists, while the actual Makefile implements a spec-kit and agent-os agent-based workflow with Docker initialization.
Following the README instructions will result in command not found errors. Update the README to document the actual targets and their usage.
🤖 Prompt for AI Agents
In README.md around lines 1 to 52, the docs list make targets (speckit-install,
speckit-init, speckit-check, speckit-clean) and a venv-based workflow that no
longer exist; update the README to match the actual Makefile targets (spec-kit,
agent-os, init, help) and the current Docker/agent-based initialization flow.
Replace the installation and init sections with brief usage examples for each
real target (how to run spec-kit, how to run agent-os, how to run init and
help), remove or rework the Python .venv instructions, and update the CI snippet
to invoke the correct make targets and any required Docker/setup steps; keep
bilingual (Korean/English) wording consistent and ensure examples use the actual
commands and environment variables required by the Makefile.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The .PHONY declaration lists
spec-kitbut the documented targetsspeckit-install,speckit-init,speckit-check, andspeckit-cleanare missing. The .PHONY declaration should include all phony targets to prevent conflicts with files of the same name.