# Day-2 — First Real Contribution

After [`README.md`](README.md) (or `README.th.md`) got you to a running app, this is the path to your first PR.

## Pick a starter task

| Want to learn…         | Try…                                                                          |
| ---------------------- | ----------------------------------------------------------------------------- |
| Schema → API → UI flow | `/create-feature leave-request` (small CRUD on a fake domain)                 |
| Backend only           | `/create-api GET /api/me/preferences user`                                    |
| Frontend only          | `/create-page admin/audit` (read-only viewer)                                 |
| DevOps                 | Add a new Helm template for `api-nest` mirroring `api-dotnet.deployment.yaml` |
| Compliance             | Run `/cost-audit deps` and write up findings                                  |

## Workflow

1. Branch: `git checkout -b feat/<scope>-<short-desc>`.
2. Open Claude Code: `claude` — it loads CLAUDE.md.
3. Run the matching slash command.
4. Let the agent run; review every edit before accepting.
5. `pnpm validate && pnpm test`. Run `dotnet test dotnet` if .NET changed.
6. `pnpm format` if Prettier complains.
7. Commit using Conventional Commits — `commit-msg` hook enforces it.
8. Push + open MR. Use the template; fill the test plan.
9. `/review-code` for a self-review before requesting humans.

## What good looks like

Read [`docs/dod.md`](../dod.md). A PR is "done" only when every box is checked.

## When in doubt

- `CLAUDE.md` first.
- The relevant blueprint under `.claude/blueprints/`.
- The relevant skill under `.claude/skills/`.
- The agent roster in `AGENTS.md`.

Still stuck? Open the PR as **draft**, describe what you tried, and ping a code owner.
