
Project Init
Auto-detect Python, Rust, or TypeScript as the primary project language before the rest of claude-night-market init modules run.
Install
npx skills add https://github.com/athola/claude-night-market --skill project-initWhat is this skill?
- 3-signal detection: config files, src/ extension counts, then interactive menu
- Recognizes pyproject.toml, Cargo.toml, and tsconfig.json-style stacks
- Sets LANGUAGE to python, rust, or typescript for downstream night-market modules
- Handles multi-language repos by asking for a primary language
- Defaults to Python when no source files exist
Adoption & trust: 1 installs on skills.sh; 304 GitHub stars; 3/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
Recommended Skills
Grill Memattpocock/skills
Grill With Docsmattpocock/skills
Brainstormingobra/superpowers
Lark Tasklarksuite/cli
Lark Workflow Standup Reportlarksuite/cli
Cavemanjuliusbrussee/blueprint
Journey fit
Common Questions / FAQ
Is Project Init safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Project Init
# Language Detection Module Automatically detect project language or help user choose. ## Detection Strategy ### 1. Check for Language-Specific Files **Python indicators**: - `pyproject.toml` - `setup.py` - `requirements.txt` - `Pipfile` **Rust indicators**: - `Cargo.toml` - `Cargo.lock` **TypeScript indicators**: - `tsconfig.json` - `package.json` with TypeScript dependencies ### 2. Scan Source Files If no config files found, check `src/` directory: ```bash # Count file types find src -name "*.py" | wc -l find src -name "*.rs" | wc -l find src -name "*.ts" -o -name "*.tsx" | wc -l ``` Language with most files wins. ### 3. Ask User If still ambiguous: ``` Unable to auto-detect project language. Please select: 1. Python 2. Rust 3. TypeScript/React Choice [1-3]: ``` ## Implementation Use `project_detector.py`: ```python from project_detector import ProjectDetector detector = ProjectDetector(Path.cwd()) language = detector.detect_language() if not language: # Ask user print("Select language:") print(" 1. Python") print(" 2. Rust") print(" 3. TypeScript") choice = input("Choice [1-3]: ") language = ["python", "rust", "typescript"][int(choice) - 1] ``` ## Output Set language variable for subsequent modules: - `LANGUAGE` = "python" | "rust" | "typescript" ## Edge Cases - **Multiple languages detected**: Ask user which is primary - **No source files**: Default to Python (most common for new projects) - **Mixed JavaScript/TypeScript**: Prefer TypeScript if tsconfig.json exists # Metadata Collection Module Collect project metadata from user or infer from environment. ## Required Metadata ### Universal (All Languages) 1. **Project Name** - Default: Current directory name - Validation: lowercase, hyphens allowed, no spaces - Example: `my-awesome-project` 2. **Author Name** - Try to infer from git config: `git config user.name` - Fallback: Ask user - Example: `Alex Thola` 3. **Author Email** - Try to infer from git config: `git config user.email` - Fallback: Ask user - Example: `alex@example.com` 4. **Project Description** - Short one-liner - Default: "A new [language] project" - Example: `A CLI tool for managing tasks` 5. **License Type** - Options: MIT, Apache-2.0, GPL-3.0, BSD-3-Clause - Default: MIT - Example: `MIT` ### Language-Specific **Python**: - `python_version`: Default "3.10" - Check installed Python: `python3 --version` - Options: 3.10, 3.11, 3.12, 3.13 **Rust**: - `rust_edition`: Default "2021" - Options: 2015, 2018, 2021, 2024 **TypeScript**: - `framework`: React, Vue, Svelte, None - `package_manager`: npm, pnpm, yarn ## Inference Strategy ```bash # Try git config first AUTHOR=$(git config user.name 2>/dev/null || echo "Your Name") EMAIL=$(git config user.email 2>/dev/null || echo "you@example.com") # Try to detect Python version PYTHON_VERSION=$(python3 --version 2>/dev/null | cut -d' ' -f2 | cut -d'.' -f1,2) ``` ## Interactive Prompts If values can't be inferred: ``` Project Metadata ================ Project name [my-project]: Author name [Your Name]: Alex Thola Author email [you@example.com]: alex@example.com Description: A CLI tool for managing tasks Python version [3.10]: 3.12 License [MIT]: Continue with these settings? [Y/n]: ``` ## Validation - **Project name**: Must be valid Python module name (or Rust crate, npm package) - Convert spaces to hyphens - Lowercase only - No special characters except hyphen/underscore - **Email**: Basic format check (contains @) - **Python version**: Must be supported (>= 3.10) ## Output Variables Store in dictionary for template rendering: ```python metadata = { "PROJECT_NAME": "my-awesome-project", "PROJECT_MODULE": "my_awesome_project", # Python module name "AUTHOR": "Alex Thola", "EMAIL": "alex@example.com", "PYTHON_VERSION": "3.12", "DESCRIPTION": "A CLI tool for managing tasks", "LICENSE": "MIT", "YEAR"