Skip to content
Back to skills

Init Project

ASecurity

Initialize a new ML project from this template

  • 42 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 31, 2026
documentationpythongobashgitapidocumentation

Works with

  • claude code
  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned May 31, 2026

npx -y skills add diegosouzapw/awesome-omni-skill --skill init-project --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Init Project?

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

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

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: init-project
description: Initialize a new ML project from this template
disable-model-invocation: true
allowed-tools: Bash(git *, python *, pip *, wandb *), Read, Edit, Write, Glob, Grep, AskUserQuestion
argument-hint: [project-name] [description]
---

# Initialize Project

Set up a new ML project from the template. User provides project name and description.

## Input

$ARGUMENTS

If project name or description not provided, ask the user.

## Workflow

### Phase 1: Gather Info

1. **Get project details** from user:
   - Project name (used for WandB project, directory context)
   - Short description (one sentence)
   - WandB entity (team or username)
   - WandB launch queue name
   - Python version preference (default: current system python3)
   - Environment variables / secrets needed (e.g., Kaggle token, HuggingFace token, custom API keys)

### Phase 2: Python Environment

2. **Create and activate virtual environment**
   ```bash
   python3 -m venv .venv
   source .venv/bin/activate
   ```

3. **Install dependencies**
   ```bash
   pip install -r requirements.txt
   ```

4. **Verify imports work**
   ```bash
   python -c "import wandb; import torch; print('All imports OK')"
   ```

### Phase 3: WandB Setup

5. **Check WandB login**
   ```bash
   wandb status
   ```
   - If not logged in, prompt user to run `wandb login`
   - Verify the entity is accessible

6. **Verify WandB Launch queue**
   ```bash
   wandb launch-agent --help
   ```
   - Ask user to confirm:
     - Queue name exists and is created in WandB UI
     - At least one agent is running or will be started on GPU environment
   - Test connectivity: `python -c "import wandb; api = wandb.Api(); print('WandB API OK')"`

### Phase 4: Environment Variables

7. **Write `.claude/settings.local.json`** with project secrets and env vars:
   - Ask user for any API keys / tokens they need (e.g., `KAGGLE_USERNAME`, `KAGGLE_KEY`, `HF_TOKEN`)
   - Write secrets only to `.claude/settings.local.json` (gitignored, local only):

     ```json
     {
       "env": {
         "WANDB_API_KEY": "<value>",
         "KAGGLE_USERNAME": "<value>",
         "KAGGLE_KEY": "<value>",
         "HF_TOKEN": "<value>"
       }
     }
     ```

   - Only include keys the user actually needs — omit unused ones
   - Verify `.claude/settings.local.json` is in `.gitignore`: `git check-ignore .claude/settings.local.json`
   - Non-secret project defaults go in `.claude/settings.json` (committed, shared):

     ```json
     {
       "env": {
         "WANDB_ENTITY": "<entity>",
         "WANDB_PROJECT": "<project-name>",
         "WANDB_QUEUE": "<queue-name>"
       }
     }
     ```

### Phase 5: CLAUDE.md — Project-Specific Notes

8. **Write CLAUDE.md** with project-specific content:

   ```markdown
   # CLAUDE.md

   ## Project: <project-name>

   <description>

   ## Key Features

   - **Git controlled**: Version-controlled experiment workflow
   - **WandB based**: Experiment tracking, launch, and evaluation
   - **Python programmed**: pip + requirements.txt
   - **Claude Code managed**: Human provides ideas, Claude Code runs the loop

   See `.claude/rules/` for detailed workflow rules.

   ## WandB Config

   - **Entity**: <entity>
   - **Project**: <project-name>
   - **Queue**: <queue-name>

   ## Current Baseline

   Initial baseline. No experiments run yet.

   ## Project-Specific Notes

   <!-- Add notes as the project evolves -->
   ```

### Phase 6: Baseline Documentation

9. **Create initial baseline doc** at `docs/baseline-history.md`:

   ```markdown
   # Baseline History

   ## Baseline 0 — Initial

   - **Date**: <today>
   - **Description**: Initial project setup from template
   - **Merged branches**: None (starting point)
   - **Discarded branches**: None
   - **Key metrics**: N/A (no training run yet)

   ---
   ```

### Phase 7: Git Cleanup

10. **Ensure clean git state**
   - Verify on `main` branch: `git branch --show-current`
   - Delete any stale local branches (except `main`): list with `git branch`, confirm with user before deleting
   - Delete any stale remote branches: `git branch -r` and confirm
   - Stage and commit all initialization files:
     - `CLAUDE.md`
     - `docs/baseline-history.md`
     - `.venv` should be in `.gitignore` (create/update if needed)

11. **Push to remote**
    - `git push origin main`

### Phase 8: Verify

12. **Run verification checklist** and print results:
    - [ ] Python venv active and dependencies installed
    - [ ] WandB logged in and API accessible
    - [ ] WandB entity and project confirmed
    - [ ] WandB launch queue name recorded
    - [ ] CLAUDE.md has project-specific config
    - [ ] docs/baseline-history.md exists
    - [ ] Git is on `main`, clean, no stale branches
    - [ ] `.gitignore` includes `.venv/` and `.claude/settings.local.json`
    - [ ] `.claude/settings.json` has non-secret project defaults
    - [ ] `.claude/settings.local.json` has secrets (not committed)
    - [ ] All changes committed and pushed
    - [ ] Next: run `/setup-automation` to set up GitHub labels, secrets, and automatic CI pipeline

13. **Print next steps**:
    - "Project initialized. Next:"
    - "1. Run `/setup-automation` to enable automatic result analysis (WandB → GitHub Actions → Claude Code)"
    - "2. Ensure a WandB Launch agent is running on your GPU environment"
    - "3. Use `/new-experiment [idea]` to create your first experiment"

## Rules

- Always ask for confirmation before deleting any git branches
- Never commit `.venv/` or `.claude/settings.local.json` — ensure `.gitignore` covers both
- If WandB login fails, do not proceed — guide user to fix it
- All WandB config (entity, project, queue) must be recorded in CLAUDE.md

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…