Use this when setting up a fresh new project.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add archibate/dotfiles-opencode --skill setup-fresh-project --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Setup Fresh Project?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/archibate-setup-fresh-project)More formats (shields.io, HTML) on the badges page.
---
name: setup-fresh-project
description: |
Use this when setting up a fresh new project.
---
# Fresh Project Setup Guide
Use this skill when you are starting to write code in a fresh project.
## Setup Steps
1. Check if already initialized with git -> not yet? run `git init`.
2. Create a `.gitignore` suitable for tech stack of choices (e.g. `__pycache__` for Python, `node_modules` for Node).
3. Create style and formatting configurations (e.g. `.stylua.toml` for Lua, `pyproject.toml` + Ruff for Python). Default to 4 spaces for tab.
4. Make sure basic tools required are available in system (e.g. `stylua`, `npm`, `uv`). If not, explicitly ask the user to install.
5. Set up LSP configurations for OpenCode.
## Language Specific
Ask user for tech stack choices. Offer default choices:
### Python
Prefer `uv` (with `venv`) and `ruff`.
#### Pyright LSP
If you are using `venv`, to prevent LSP errors about 'package not found', create `pyrightconfig.json` with content:
```json
{
"venvPath": ".",
"venv": ".venv"
}
```
### Typescript
Prefer `biome` and `npm` (or `bun`).
### Lua
Prefer `stylua`.
#### NeoVim Lua Projects
If the Lua project is used as a NeoVim configuration or plugin:
Create a `.luarc.json` with content:
```json
{
"runtime.version": "LuaJIT",
"runtime.path": [
"lua/?.lua",
"lua/?/init.lua"
],
"diagnostics.globals": ["vim"],
"workspace.checkThirdParty": false,
"workspace.library": [
"$VIMRUNTIME"
]
}
```
### C/C++
Prefer `clang`, `cmake` and `clang-format`.
#### Clangd LSP
Make sure to use `cmake -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON` when build (or add `set(CMAKE_EXPORT_COMPILE_COMMANDS ON)` to `CMakeLists.txt`). This will create `build/compile_commands.json`, for `clangd` to not reporting false positive errors about include header missing.
## Folder Structure
Follow industry best pratice of project folder structure most suitable the tech stack.
e.g.:
- `src/`, `tests/`, `dist/` for Python & PyTest project.
- `src/`, `include/`, `build/` for C++ & CMake project.
- `lua/` for NeoVim Lua plugin project.
A `.gitignore` and `README.md` is always required for all projects.
### Documentation
Main documentation resides in `README.md`. With a simple and clear introduction on how to use this project, including but not limited to the following perspectives:
- What is this?
- Project structure?
- How to build?
- How to test?
- How to install or deploy?
- ...
`README.md` must be presented in a clear, structured markdown format. No placeholders.
`README.md` focus on big-picture. Optionally create `.md` under `docs/` for more detailed documentation and refer them in `README.md`.
If this is to be a public project (potentially upload to github), not for personal use:
- Make sure no hard-coded user path (e.g. `/home/bate/project`) in `README.md` and other documents.
- Make sure no invalid fake link used in `README.md` and other documents (e.g. `[Screenshot](screenshot.png)` but actually no such file).
- Make sure no hard-coded user credentials (e.g. API keys, tokens, or password) in any files tracked by git.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!