.claude/skills/template-contribute/SKILL.md
Contribute improvements back to research-project-template (テンプレートへの改善PR)
npx skillsauth add AtsushiHashimoto/research-project-template .claude/skills/template-contributeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
ローカルプロジェクトでのテンプレート関連ファイルの改善を、テンプレートリポジトリにPRとして提出します。
テンプレート由来のファイルのみが対象です:
.claude/commands/ — コマンド定義.claude/skills/ — スキル定義.claude/CLAUDE.md — プロジェクト設定(汚染チェック必須).devcontainer/ — DevContainer設定scripts/ — ユーティリティスクリプトinstall.sh — インストーラーTEMPLATE_REPO="https://github.com/AtsushiHashimoto/research-project-template"
TMP_DIR=$(mktemp -d)
git clone --depth 1 "$TEMPLATE_REPO" "$TMP_DIR/template" 2>/dev/null
テンプレートとローカルの差分を検出:
CONTRIBUTE_TARGETS=(
".claude/commands"
".claude/skills"
".claude/CLAUDE.md"
".devcontainer"
"scripts"
"install.sh"
)
for target in "${CONTRIBUTE_TARGETS[@]}"; do
diff -rq "$TMP_DIR/template/$target" "$target" 2>/dev/null
done
ユーザーに検出された変更を提示:
## テンプレートへの貢献候補
### ローカルで変更されたファイル
- `scripts/safe-remove-worktree.sh` — cd ガード追加
- `.claude/skills/review/SKILL.md` — レビュー手順改善
### ローカルで追加されたファイル
- `.claude/skills/new-skill/SKILL.md` — 新規スキル
テンプレートに貢献するファイルを選択してください。
各変更について貢献するかどうか確認。
★★★ このステップは絶対にスキップしない ★★★
貢献予定の各ファイルに対して、プロジェクト固有の内容が混入していないか検証する。 テンプレートに push されるファイルは汎用的でなければならない。
install.sh が生成する .claude/template-substitutions.json を使い、
プロジェクト固有の値がファイルに残っていないかチェック:
SUBSTITUTIONS_FILE=".claude/template-substitutions.json"
if [ -f "$SUBSTITUTIONS_FILE" ]; then
echo "=== 置換ログベースの汚染チェック ==="
CONTAMINATED=false
for key in $(jq -r 'keys[]' "$SUBSTITUTIONS_FILE"); do
value=$(jq -r ".[\"$key\"]" "$SUBSTITUTIONS_FILE")
# 空値やTODOプレースホルダーはスキップ
if [ -n "$value" ] && [[ "$value" != TODO:* ]]; then
for file in $SELECTED_FILES; do
matches=$(grep -n "$value" "$file" 2>/dev/null || true)
if [ -n "$matches" ]; then
echo "CONTAMINATION in $file: $key=$value"
echo "$matches"
CONTAMINATED=true
fi
done
fi
done
if [ "$CONTAMINATED" = true ]; then
echo ""
echo "⚠️ プロジェクト固有の値が検出されました。"
echo "プレースホルダー({{...}})または汎用的な表現に置き換えてください。"
else
echo "✅ 機械的チェック: 汚染なし"
fi
else
echo "⚠️ .claude/template-substitutions.json が見つかりません。"
echo "install.sh で生成されるファイルです。手動チェックに進みます。"
fi
{{...}} または汎用的な表現に置き換え★★★ このステップは絶対にスキップしない ★★★
/review と同じサブエージェントベースのレビューを実行する。
テンプレートに push するコードもプロジェクトコードと同じ品質基準でレビューする。
Skill(skill="review")
レビューで問題が検出された場合は修正してから続行。
テンプレートリポジトリへの push 権限があるか確認:
# 直接 push できるか確認
gh repo view "$TEMPLATE_REPO" --json viewerPermission -q '.viewerPermission'
cd "$TMP_DIR/template"
BRANCH_NAME="contribute/$(date +%Y%m%d)-improvements"
git checkout -b "$BRANCH_NAME"
# 選択されたファイルをコピー
for file in $SELECTED_FILES; do
cp "$PROJECT_ROOT/$file" "$TMP_DIR/template/$file"
done
git add .
git commit -m "feat: contribute improvements from downstream project"
git push -u origin "$BRANCH_NAME"
FORK_REPO=$(gh repo list --fork --json nameWithOwner --jq '.[].nameWithOwner' | grep "research-project-template")
# fork がなければ作成
if [ -z "$FORK_REPO" ]; then
gh repo fork "$TEMPLATE_REPO" --clone=false
FORK_REPO=$(gh repo list --fork --json nameWithOwner --jq '.[].nameWithOwner' | grep "research-project-template")
fi
git clone "https://github.com/$FORK_REPO" "$TMP_DIR/fork"
cd "$TMP_DIR/fork"
BRANCH_NAME="contribute/$(date +%Y%m%d)-improvements"
git checkout -b "$BRANCH_NAME"
for file in $SELECTED_FILES; do
cp "$PROJECT_ROOT/$file" "$TMP_DIR/fork/$file"
done
git add .
git commit -m "feat: contribute improvements from downstream project"
git push -u origin "$BRANCH_NAME"
gh pr create \
--repo "$TEMPLATE_REPO" \
--head "$BRANCH_NAME" \
--title "feat: contribute improvements from downstream project" \
--body "## 変更概要
[変更内容の説明]
## 変更の意図
[なぜこの変更が必要か]
## 品質チェック
- ✅ 汚染チェック実施(template-substitutions.json ベース)
- ✅ /review レビュー実施
## 影響範囲
[テンプレートを使用する他のプロジェクトへの影響]
---
*This PR was created via \`/template/contribute\` command.*"
rm -rf "$TMP_DIR"
重要:
/template/sync を使用gh auth status で確認可能)data-ai
Set up data directories in a new worktree
testing
Safely remove a worktree after checking for important data
data-ai
Initialize worktree data protection configuration (run once in main repository)
research
Sync updates from research-project-template (テンプレート更新の取り込み)