OpenSource-Hub

skills

CLI 도구

mattpocock/skills

실제 소프트웨어 엔지니어링을 위한 AI 에이전트 스킬 세트.

개요

Claude Code 등 프로그래밍 에이전트를 위한 소형 조합 가능 스킬 세트. 정렬, 장황함, 코드 품질 등 일반적인 문제를 해결합니다. 바비큐식 요구사항 명확화, 테스트 주도 개발, 진단 및 아키텍처 개선 등의 스킬을 포함합니다.

README 미리보기

\n  \n    \n      \n      \n      \n    \n  \n\n\n# Skills For Real Engineers\n\n[](https://skills.sh/mattpocock/skills)\n\nMy agent skills that I use every day to do real engineering - not vibe coding.\n\nDeveloping real applications is hard. Approaches like GSD, BMAD, and Spec-Kit try to help by owning the process. But while doing so, they take away your control and make bugs in the process hard to resolve.\n\nThese skills are designed to be small, easy to adapt, and composable. They work with any model. They're based on decades of engineering experience. Hack around with them. Make them your own. Enjoy.\n\nIf you want to keep up with changes to these skills, and any new ones I create, you can join ~60,000 other devs on my newsletter:\n\n[Sign Up To The Newsletter](https://www.aihero.dev/s/skills-newsletter)\n\n## Quickstart (30-second setup)\n\n1. Run the skills.sh installer:\n\n```bash\nnpx skills@latest add mattpocock/skills\n```\n\n2. Pick the skills you want, and which coding agents you want to install them on. **Make sure you select `/setup-matt-pocock-skills`**.\n\n3. Run `/setup-matt-pocock-skills` in your agent. It will:\n   - Ask you which issue tracker you want to use (GitHub, Linear, or local files)\n   - Ask you what labels you apply to ticks when you triage them (`/triage` uses labels)\n   - Ask you where you want to save any docs we create\n\n4. Bam - you're ready to go.\n\n## Why These Skills Exist\n\nI built these skills as a way to fix common failure modes I see with Claude Code, Codex, and other coding agents.\n\n### #1: The Agent Didn't Do What I Want\n\n> "No-one knows exactly what they want"\n>\n> David Thomas & Andrew Hunt, [The Pragmatic Programmer](https://www.amazon.co.uk/Pragmatic-Programmer-Anniversary-Journey-Mastery/dp/B0833F1T3V)\n\n**The Problem**. The most common failure mode in software development is misalignment. You think the dev knows what you want. Then you see what they've built - and you realize it didn't understand you at 

FAQ (5)

문제 해결
`set -e` 상태에서 `tput clear`가 실패하여 Bash 마법사가 TERM=dumb 또는 CI pty에서 즉시 종료되는 문제를 어떻게 해결하나요?

tput 바이너리가 존재한다는 이유만으로 tput clear를 선택하지 마세요. if 조건에서 실행하고, 실패하면 ANSI 이스케이프 시퀀스로 폴백하세요:

_clear() {
  if command -v tput >/dev/null 2>&1 && tput clear 2>/dev/null; then
    return 0
  fi
  printf '\033[2J\033[3J\033[H'
}

if 조건에서 실패한 명령은 errexit을 트리거하지 않으므로, Bash 3.2를 포함하여 set -euo pipefail과 함께 사용해도 안전합니다. stderr를 리다이렉션하면 terminfo 오류가 억제됩니다. 파이프를 통하지 말고 TERM=dumb와 같은 PTY에서 원래의 실패를 재현하세요. stdout이 TTY가 아니면 _clear가 조기에 반환될 수 있습니다.

원본 Issue #1081
문제 해결
왜 `write_env KEY VALUE`가 env 파일에 값을 쓴 후에도 `${KEY:-default}`가 여전히 기본값을 사용하나요?

mattpocock-skills 1.2.3에서 write_env는 KEY=VALUE를 $ENV_FILE에 upsert만 수행하며, 실행 중인 셸에는 KEY를 설정하지 않습니다. 따라서 ${KEY:-default}를 사용하는 이후 단계에서는 변수가 설정되지 않은 것으로 인식되어 기본값을 사용하게 됩니다. ask와 ask_secret을 본떠 printf -v로 변수를 할당하도록 skills/engineering/wizard/template.sh를 수정하세요:

write_env() {
  local key="$1" value="$2" tmp
  touch "$ENV_FILE"
  tmp=$(mktemp)
  grep -vE "^${key}=" "$ENV_FILE" > "$tmp" || true
  printf '%s=%s\n' "$key" "$value" >> "$tmp"
  mv "$tmp" "$ENV_FILE"

  printf -v "$key" '%s' "$value"

  WRITTEN_ENV+=("$key")
  printf '  %s✓ wrote%s %s → %s\n' "$GREEN" "$RESET" "$key" "$ENV_FILE"
}

이미 생성된 wizard에서 즉시 적용 가능한 해결 방법으로는, 값을 기록한 후 WRITE_KEY_NAME="dealsplash-import-write"와 같이 명시적으로 값을 할당하거나, 이후 단계가 해당 값을 읽기 전에 env 파일을 source하거나 다시 로드하세요.

원본 Issue #1041
문제 해결
wizard skill로 생성된 스크립트에서 사용되지 않는 RED 변수에 대한 ShellCheck SC2034 경고를 어떻게 수정하나요?

skills/engineering/wizard/template.sh의 color 및 no-color 브랜치 모두에서 사용되지 않는 RED 할당(예: RED=$(tput setaf 1) 및 RED=''와 같은 해당 no-color 할당)을 제거하세요. wizard 스크립트를 다시 생성하세요. grep -n RED skills/engineering/wizard/로 확인하고(아무것도 반환되지 않아야 함), 생성된 스크립트에 대해 shellcheck를 실행하여 SC2034가 사라졌는지 확인하세요. 템플릿을 즉시 업데이트할 수 없는 경우, 임시 해결 방법으로 생성된 스크립트에서 사용되지 않는 RED 선언을 삭제하세요.

원본 Issue #1003
문제 해결
Bash 스크립트가 read 프롬프트에서 대기하는 동안 해당 스크립트를 편집하면 왜 "syntax error near unexpected token" 오류가 발생하나요?

Bash는 스크립트 파일 전체를 먼저 로드하는 대신 바이트 오프셋 기준으로 점진적으로 읽습니다. 스크립트가 프롬프트에서 일시 중지된 동안 파일이 변경되면, Bash는 변경된 새 내용에서 이전의 오래된 오프셋 위치부터 읽기를 재개하며, 이로 인해 syntax error near unexpected token '('와 같은 잘못된 구문 오류가 발생할 수 있습니다.

마법사의 실행 가능한 스테이지 코드를 하나의 함수로 감싸고, 마지막 줄에서만 그 함수를 호출한 뒤 exit를 붙여 문제를 해결하세요. Bash는 함수를 실행하기 전에 전체를 파싱하므로, 더 이상 프롬프트 동안 변경되는 스크립트 파일을 읽지 않습니다:

run_wizard() {
  TOTAL_STAGES=1

  banner "Setup"
  # stage prompts and logic here
  finish
}

run_wizard "$@"; exit

스테이지 마커 위의 공유 라이브러리 코드는 변경하지 않고 유지하고, 모든 스테이지 로직은 run_wizard 안에 두며, 마지막 호출 줄은 그대로 두세요. 다음 명령으로 확인하세요:

bash -n template.sh

이 수정은 Bash 3.2와 Bash 5.3에서 검증되었습니다. 임시 해결 방법으로, 마법사 스크립트가 실행 중인 동안에는 저장, 재생성, git pull 또는 기타 어떤 방식으로도 스크립트를 수정하지 마세요. 대신 변경 불가능한 복사본을 실행하세요.

원본 Issue #1142
문제 해결
AI 어시스턴트가 대화 중에 내 프로젝트의 유비쿼터스 언어를 사용하게 하려면 어떻게 해야 하나요?

유비쿼터스 언어 기술(ubiquitous language skill)은 이제 /grill-me-docs 명령어에 통합되었습니다. 해당 명령어를 실행하여 AI를 사용자의 용어에 맞추십시오. 프로젝트 용어가 포함된 CONTEXT.md 파일을 생성하려면 /grill-with-docs를 반복적으로 사용하십시오.

원본 Issue #29