Skip to content
Merged
Show file tree
Hide file tree
Changes from 16 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
.PHONY: spec-kit agent-os help init
Copy link

Copilot AI Jan 1, 2026

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-kit but the documented targets speckit-install, speckit-init, speckit-check, and speckit-clean are missing. The .PHONY declaration should include all phony targets to prevent conflicts with files of the same name.

Suggested change
.PHONY: spec-kit agent-os help init
.PHONY: spec-kit speckit-install speckit-init speckit-check speckit-clean agent-os help init

Copilot uses AI. Check for mistakes.

.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)
Copy link

Copilot AI Jan 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The target name uses an inconsistent naming convention with a hyphen spec-kit instead of following the pattern speckit-* documented in the README. This creates confusion as the documentation refers to speckit-install, speckit-init, etc., but the actual target is named spec-kit. Consider renaming to speckit or implementing the documented targets like speckit-install for consistency.

Copilot uses AI. Check for mistakes.
@agent=$(word 2,$(MAKECMDGOALS)); \
if [ -z "$$agent" ]; then \
agent="claude"; \
echo "Using default agent: claude"; \
fi; \
Comment on lines +9 to +13
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The method of parsing arguments using MAKECMDGOALS is unconventional for Makefiles and can be brittle. A more standard and robust approach is to use Makefile variables passed as environment variables. This allows users to run commands like make spec-kit agent=claude, which is more explicit than make spec-kit claude. You can then use shell parameter expansion to provide a default value.

	@agent=$${agent:-claude}; \
	echo "Using agent: $$agent";

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"; \
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The script path is hardcoded relative to $HOME. This makes the target less portable as it assumes agent-os is always installed in ~/agent-os. It would be more robust to either check for the script in the system's PATH (e.g., using command -v project-install.sh) or allow the path to be overridden via a Makefile variable.

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)
Copy link

Copilot AI Jan 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The init target is documented as installing npm packages and running Laravel migrations, but it shares the same name as what appears to be a Speckit initialization command in the README (line 28 shows make speckit-init). This creates ambiguity. The Docker/Laravel init target should have a more specific name like docker-init or laravel-init to avoid confusion with Speckit initialization.

Copilot uses AI. Check for mistakes.
@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

%:
Copy link

Copilot AI Jan 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The catch-all pattern rule at the end silently ignores unknown targets, which masks errors when users mistype target names. For example, if a user types make speckit-install (as documented), it will succeed silently without doing anything instead of showing an error. This catch-all should be removed or modified to show an error for undefined targets.

Suggested change
%:
%:
@if [ "$@" = "$(word 1,$(MAKECMDGOALS))" ]; then \
echo "make: *** No rule to make target '$@'."; \
exit 1; \
fi; \

Copilot uses AI. Check for mistakes.
@:
Comment on lines +1 to +63
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

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.

Comment on lines +1 to +63
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

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.

53 changes: 52 additions & 1 deletion README.md
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.
Copy link

Copilot AI Jan 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The documentation states that only Python 3 and make are required, and mentions using a local virtual environment (.venv). However, the actual Makefile implementation requires uv and the specify CLI tool (installed via uv tool install), which is a different installation mechanism than what's documented here. The prerequisites and installation method need to be corrected to match the actual implementation.

Copilot uses AI. Check for mistakes.

### 설치

로컬 가상환경(`.venv`)에 Speckit을 설치합니다. 필요 시 버전을 고정해 사용할 수 있습니다.

```bash
# 최신 버전
make speckit-install
Copy link

Copilot AI Jan 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The documented target speckit-install does not exist in the Makefile. The Makefile contains a target named spec-kit (with a hyphen) instead, which has completely different functionality (it runs specify init rather than installing speckit). The documented targets speckit-install, speckit-init, speckit-check, and speckit-clean need to be implemented in the Makefile to match this documentation.

Copilot uses AI. Check for mistakes.

# 특정 버전 설치
SPECKIT_VERSION=0.2.0 make speckit-install

Copy link

Copilot AI Jan 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The documentation shows version pinning with SPECKIT_VERSION=0.2.0, but the Makefile does not support any version parameter. The spec-kit target in the Makefile does not accept or use a SPECKIT_VERSION environment variable, so this documented feature is not implemented.

Suggested change
# 최신 버전
make speckit-install
# 특정 버전 설치
SPECKIT_VERSION=0.2.0 make speckit-install
# 최신 버전 설치 (현재 Makefile은 항상 최신 버전을 설치합니다.)
make speckit-install

Copilot uses AI. Check for mistakes.
# 사용 가능한 버전 확인 (예시)
pip index versions speckit
Copy link

Copilot AI Jan 1, 2026

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.

Suggested change
# 사용 가능한 버전 확인 (예시)
pip index versions speckit
# 사용 가능한 버전 확인 (예시):
# Speckit GitHub 저장소의 Releases/Tags 페이지에서 사용할 버전을 확인하세요.

Copilot uses AI. Check for mistakes.
```

### 초기화 및 검증

```bash
# 초기 설정 (예: 템플릿 생성)
make speckit-init

Copy link

Copilot AI Jan 1, 2026

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.

Suggested change
# 초기 설정 (예: 템플릿 생성)
make speckit-init

Copilot uses AI. Check for mistakes.
# 규칙 검증
make speckit-check
Copy link

Copilot AI Jan 1, 2026

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 uses AI. Check for mistakes.
```

### 정리

```bash
make speckit-clean
```

Copy link

Copilot AI Jan 1, 2026

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.

Suggested change
### 정리
```bash
make speckit-clean
```

Copilot uses AI. Check for mistakes.
### CI/워크플로우 예시 (옵션)

CI에서 동일한 명령을 재사용할 수 있습니다.

```yaml
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.x'
- run: make speckit-install
- run: make speckit-check
Copy link

Copilot AI Jan 1, 2026

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.

Suggested change
- run: make speckit-install
- run: make speckit-check
- run: make install
- run: make check

Copilot uses AI. Check for mistakes.
```
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The instructions and examples in this README refer to make targets like speckit-install, speckit-init, and speckit-check. However, these targets are not defined in the Makefile included in this pull request. The documentation needs to be synchronized with the actual implementation in the Makefile.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# First, let's find and examine the Makefile
find . -name "Makefile" -o -name "makefile" | head -20

Repository: kimchanhyung98/base

Length of output: 73


🏁 Script executed:

# Also check the README structure
find . -name "README*" | head -20

Repository: kimchanhyung98/base

Length of output: 74


🏁 Script executed:

cat -n ./Makefile

Repository: kimchanhyung98/base

Length of output: 2808


🏁 Script executed:

head -52 ./README.md

Repository: 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.