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)

トラブル対応
TERM=dumb 環境や CI の pty で `tput clear` が失敗し、`set -e` が有効なために Bash ウィザードが即座に終了してしまう問題を修正するにはどうすればよいですか?

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上で元の失敗を再現してください。TTY以外のstdoutでは_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"
}

すでに生成済みのウィザードに対する即時の回避策としては、書き込み後に値を明示的に代入します(例: WRITE_KEY_NAME="dealsplash-import-write")。あるいは、後続のステージが読み取る前に env ファイルを source するか再読み込みしてください。

参照 Issue #1041
トラブル対応
wizard スキルが生成したスクリプト内の未使用の RED 変数に対する ShellCheck SC2034 を修正するにはどうすればよいですか?

skills/engineering/wizard/template.sh から、カラー分岐とno-color分岐の両方にある未使用の RED 代入を削除してください。例えば RED=$(tput setaf 1) や、それに対応する RED='' のようなno-color代入です。ウィザードスクリプトを再生成してください。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を使用させるにはどうすればよいですか?

ユビキタス言語スキルが /grill-me-docs コマンドに統合されました。そのコマンドを実行して、AI をあなたの用語に合わせてください。プロジェクト用語を含む CONTEXT.md ファイルを作成するには、/grill-with-docs を繰り返し使用してください。

参照 Issue #29