npx claudepluginhub pjt222/agent-almanacThis skill uses the workspace's default tool permissions.
---
Initializes a git repository in the current directory, optionally adds mandatory commit instructions for agents to AGENTS.md, and generates a .gitignore for flavors like Node.js, Python, or custom patterns.
Sets up pre-commit, pre-push, and commit-msg git hooks for Node.js (husky, lint-staged) and Python (pre-commit) projects to automate linting, testing, formatting, and commit conventions.
Initializes new Python, Rust, or TypeScript projects interactively with git repo, GitHub workflows, pre-commit hooks, Makefile, and standard configs. Updates existing projects too.
Share bugs, ideas, or general feedback.
Set up a Git repository with appropriate configuration for the project type.
.gitignore for a specific language/frameworkcd /path/to/project
git init
git branch -M main
Expected: .git/ directory created. Default branch is named main.
On failure: If git init fails, ensure Git is installed (git --version). If the directory already has a .git/, the repository is already initialized — skip this step.
R Package:
# R artifacts
.Rhistory
.RData
.Rproj.user/
*.Rproj
# Environment (sensitive)
.Renviron
# renv library (machine-specific)
renv/library/
renv/staging/
renv/cache/
# Build artifacts
*.tar.gz
src/*.o
src/*.so
src/*.dll
# Documentation build
docs/
inst/doc/
# IDE
.vscode/
.idea/
# OS
.DS_Store
Thumbs.db
Node.js/TypeScript:
node_modules/
dist/
build/
.next/
.env
.env.local
.env.*.local
*.log
npm-debug.log*
.DS_Store
Thumbs.db
.vscode/
.idea/
coverage/
Python:
__pycache__/
*.py[cod]
*.egg-info/
dist/
build/
.eggs/
.venv/
venv/
.env
*.log
.mypy_cache/
.pytest_cache/
htmlcov/
.coverage
.DS_Store
.idea/
.vscode/
Expected: .gitignore file created with entries appropriate for the project type. Sensitive files (.Renviron, .env) and generated artifacts are excluded.
On failure: If unsure which entries to include, use gitignore.io or GitHub's .gitignore templates as a starting point and customize for the project.
git add .gitignore
git add . # Review what's being added first with git status
git commit -m "Initial project setup"
Expected: First commit created containing .gitignore and initial project files. git log shows one commit.
On failure: If git commit fails with "nothing to commit," ensure files were staged with git add. If it fails with an author identity error, set git config user.name and git config user.email.
# Add remote
git remote add origin git@github.com:username/repo.git
# Push
git push -u origin main
Expected: Remote origin is configured. git remote -v shows fetch and push URLs. Initial commit is pushed to the remote.
On failure: If push fails with "Permission denied (publickey)," configure SSH keys (see setup-wsl-dev-environment). If the remote already exists, update it with git remote set-url origin <url>.
Trunk-based (recommended for small teams):
main: production-ready codefeature/descriptionfix/description# Create feature branch
git checkout -b feature/add-authentication
# After work is done, merge or create PR
git checkout main
git merge feature/add-authentication
Expected: Branch naming convention is established and documented. Team members know which prefix to use for each type of work.
On failure: If branches are already named inconsistently, rename them with git branch -m old-name new-name and update any open PRs.
Conventional Commits format:
type(scope): description
feat: add user authentication
fix: correct calculation in weighted_mean
docs: update README installation section
test: add edge case tests for parser
refactor: extract helper function
chore: update dependencies
Expected: Commit message convention is documented and agreed upon by the team. Future commits follow the type: description format.
On failure: If team members are not following the convention, enforce it with a commit-msg hook that validates the format (see Step 7).
Create .githooks/pre-commit:
#!/bin/bash
# Run linter before commit
# For R packages
if [ -f "DESCRIPTION" ]; then
Rscript -e "lintr::lint_package()" || exit 1
fi
# For Node.js
if [ -f "package.json" ]; then
npm run lint || exit 1
fi
chmod +x .githooks/pre-commit
git config core.hooksPath .githooks
Expected: Pre-commit hook runs automatically on each git commit. Linting errors block the commit until fixed.
On failure: If the hook does not run, verify core.hooksPath is set (git config core.hooksPath) and the hook file is executable (chmod +x).
# Minimal README
echo "# Project Name" > README.md
echo "" >> README.md
echo "Brief description of the project." >> README.md
git add README.md
git commit -m "Add README"
Expected: README.md committed to the repository. The project has a minimal but informative landing page on GitHub.
On failure: If README.md already exists, update it rather than overwriting. Use usethis::use_readme_md() in R projects for a template with badges.
.gitignore excludes sensitive and generated files.gitignore first. Files already tracked aren't affected by later .gitignore entries.git filter-repo or BFG to clean.core.autocrlf=input on Windows/WSL to prevent CRLF/LF issues.commit-changes - staging and committing workflowmanage-git-branches - branch creation and conventionscreate-r-package - Git setup as part of R package creationsetup-wsl-dev-environment - Git installation and SSH keyscreate-github-release - creating releases from the repositorysecurity-audit-codebase - check for committed secrets