Skip to content
Back to skills

Project Init

ASecurity

Scaffolds new projects with git, CI/CD workflows, pre-commit hooks, and build config. Use when starting a new Python, Rust, or TypeScript project from scratch.

  • 342 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added February 7, 2026
developmenttypescriptpythonrustgobashreactvuegitci/cd

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 20, 2026

npx -y skills add athola/claude-night-market --skill project-init --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Project Init?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Project Init
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/athola-project-init/badge)](https://www.skillsdirectory.com/skills/athola-project-init)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: project-init
description: Scaffolds new projects with git, CI/CD workflows, pre-commit hooks, and build config. Use when starting a new Python, Rust, or TypeScript project from scratch.
alwaysApply: false
model: sonnet
tools: []
modules:
- ./modules/language-detection.md
- ./modules/metadata-collection.md
- ./modules/template-rendering.md
model_hint: standard
role: entrypoint
---

# Project Initialization Skill

Interactive workflow for initializing new software projects with complete development infrastructure.

## Use When

- Starting a new Python, Rust, or TypeScript project
- Updating existing project tooling to current standards
- Need to set up git, GitHub workflows, pre-commit hooks, Makefile
- Want consistent project structure across team
- Converting unstructured project to best practices
- Adding missing configurations to established codebases

## Workflow

### 1. Detect or Select Language

Load `modules/language-detection.md`

- Auto-detect from existing files (pyproject.toml, Cargo.toml, package.json)
- If ambiguous or empty directory, ask user to select
- Validate language is supported (python, rust, typescript)

### 2. Collect Project Metadata

Load `modules/metadata-collection.md`

Gather:
- Project name (default: directory name)
- Author name and email
- Project description
- Language-specific settings:
  - Python: version (default 3.10)
  - Rust: edition (default 2021)
  - TypeScript: framework (React, Vue, etc.)
- License type (MIT, Apache, GPL, etc.)

### 3. Review Existing Files

Check for existing configurations:
```bash
ls -la
```
**Verification:** Run the command with `--help` flag to verify availability.

If files exist (Makefile, .gitignore, etc.):
- Show what would be overwritten
- Ask for confirmation or selective overwrite
- Offer merge mode (preserve custom content)

### 4. Render and Apply Templates

Load `modules/template-rendering.md`

Run initialization script:
```bash
python3 plugins/attune/scripts/attune_init.py \
  --lang {{LANGUAGE}} \
  --name {{PROJECT_NAME}} \
  --author {{AUTHOR}} \
  --email {{EMAIL}} \
  --python-version {{PYTHON_VERSION}} \
  --description {{DESCRIPTION}} \
  --path .
```
**Verification:** Run the command with `--help` flag to verify availability.

The script also scaffolds the project decision journal: `docs/tradeoffs.md`
and `docs/lessons-learned.md`. These are append-only logs that later workflows
(brainstorm, specify, plan, execute, review) write to as decisions and lessons
arise. Existing journal files are never overwritten. The format follows the
`leyline:decision-journal` contract; init uses leyline's template when present
and a vendored copy otherwise, so it works with or without leyline installed.

**Verification:** Confirm `docs/tradeoffs.md` and `docs/lessons-learned.md`
exist and each contains an `## Active index` and an `## Archive` section.

### 5. Initialize Git (if needed)

```bash
# Check if git is initialized
if [ ! -d .git ]; then
  git init
  echo "Git repository initialized"
fi
```
**Verification:** Run `git status` to confirm working tree state.

### 6. Verify Setup

Validate setup:
```bash
# Check Makefile targets
make help

# List created files
git status
```
**Verification:** Run `git status` to confirm working tree state.

### 7. Next Steps

Advise user to:
```bash
# Install dependencies and hooks
make dev-setup

# Run tests to verify setup
make test

# See all available commands
make help
```
**Verification:** Run `pytest -v` to verify tests pass.

## Error Handling

- **Language detection fails**: Ask user to specify `--lang`
- **Script not found**: Guide to plugin installation location
- **Permission denied**: Suggest `chmod +x` on scripts
- **Git conflicts**: Offer to stash or commit existing work

## Success Criteria

- All template files created successfully
- No overwrites without user confirmation
- Git repository initialized
- `make help` shows available targets
- `make test` runs without errors (even if no tests yet)

## Exit Criteria

- [ ] Template files for the selected language are created (or, in dry-run,
  reported) with no unconfirmed overwrites.
- [ ] `docs/tradeoffs.md` and `docs/lessons-learned.md` exist, each with an
  `## Active index` and an `## Archive` section.
- [ ] A pre-existing journal file is detected and left unmodified.
- [ ] Git is initialized (unless `--no-git`) and `make help` lists targets.
- [ ] Running with `--dry-run` writes no files, including the journal.

## Examples

### Example 1: New Python Project

```
**Verification:** Run `pytest -v` to verify tests pass.
User: /attune:project-init

Files in this skill

  • SKILL.md4.4 KB
  • modules/language-detection.md1.5 KB
  • modules/metadata-collection.md3 KB
  • modules/template-rendering.md4.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.