Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .claude/commands/create-PR.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Create a PR against this branch: $ARGUMENTS.

## Follow these steps:

1. ALWAYS start by running `git status` to check what branch you're on
2. Use this template: `gh pr create --base core --head <branch_name> --title "very clear & concise title" --body "clear, detailed description of changes"`
3. Always create Pull Requests against the branch the user specifics.
4. If you run into issues, STOP and explain the error to the user.

## Remember:

- DO NOT CREDIT YOURSELF in the PR's description
- Especially do not add this at the end: 🤖 Generated with [Claude Code](https://claude.ai/code)
- Use the GitHub CLI (`gh`) for all GitHub-related tasks
- Make titles clear & concise; make descriptions detailed yet focused, without testing plan; never credit yourself
- Define titles following Conventional Commits specification:
- for fixes, prefix with "fix: "
- for new features, prefix with "feat: "
- for edits, prefix with "chore: "
- Example: `fix: resolve logout bug`, `feat: add login form`
35 changes: 35 additions & 0 deletions .claude/commands/push-changes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Push these changes to GitHub: $ARGUMENTS.

If no topic provided, just document the recent changes.
If a topic is provided, focus on documenting that topic.

## Follow these steps:

> Note: skip steps 2 & 3 if there is nothing to commit

1. run `git status` to get the current branch name and learn about changes being made
2. run `git add src/*` to stage all files (unless the user says otherwise)
3. run `git commit -m "commit message"` to commit changes (make the message very concise yet complete, do not give yourself credit)
4. run `git push --set-upstream origin <branch_name>` to push changes to GitHub

## # Important Rules:

- FOLLOW THIS EXACT ORDER. EACH STEP IS A SEPARATE TERMINAL.
- commit messages cannot contain newline characters
- never just do `git commit`. always include a commit message
- keep commit messages concise, while still clearly describing the changes
- if the user mentions a specific issue number, include it in the commit message
- NEVER EVER do a force push
- NEVER EVER commit files outside of `src` dir
- Follow Conventional Commits specification:
- for fixes, prefix with "fix: "
- for new features, prefix with "feat: "
- for edits, prefix with "chore: "
- Example: `fix: add logging to catch block of <query_name> query`, `feat: add client side validation to login form`

## # Commonly used branches:

- `core` – Production branch. Never push (unless the user says otherwise).
- `basic` – Production branch. Never push (unless the user says otherwise).

PS: always run `git status` to get the current branch name.
46 changes: 46 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{
"permissions": {
"allow": [
"Bash(ls:*)",
"Bash(git status)",
"Bash(git add:*)",
"Bash(git commit:*)",
"Bash(git pull:*)",
"Bash(git push:*)",
"Bash(git checkout:*)",
"Bash(pnpm dev)",
"Bash(pnpm lint)",
"Bash(pnpm storybook)",
"Bash(pnpm test)",
"Bash(pnpm test:coverage)",
"Bash(pnpm test:unit)",
"Bash(pnpm test:storybook)",
"Bash(rg:*)",
"Bash(gh pr view:*)",
"Bash(gh pr diff:*)"
],
"deny": [
"Bash(rm -rf /)",
"Bash(:(){ :|:& };:)",
"Bash(dd if=/dev/random of=/dev/sda)",
"Bash(chmod -R 777 /)",
"Bash(wget -O- | bash)",
"Bash(sudo rm -rf /)",
"Bash(mv ~ /dev/null)",
"Bash(> ~/.bash_history)",
"Bash(curl | bash)",
"Bash(mkfs.)",
"Bash(echo > /etc*)",
"Bash(kill -9 1)",
"Bash(killall5)",
"Bash(shutdown)",
"Bash(reboot)",
"Bash(git clean -fdx)",
"Bash(git clean)",
"Bash(git push origin main --force)",
"Bash(git reset --hard)",
"Bash(pnpm install)",
"Bash(pnpm install:*)"
]
}
}
12 changes: 12 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@ FROM mcr.microsoft.com/devcontainers/typescript-node:dev-22

RUN corepack enable

# Install GitHub CLI
RUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
&& chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& apt update \
&& apt install -y gh

# Setup Claude Code

## Ensure default node user has access to pnpm global directory
Expand All @@ -25,6 +32,11 @@ ENV DEVCONTAINER=true
RUN mkdir -p /home/node/.claude && \
chown -R node:node /home/node/.claude

## Create SSH and GitHub CLI config directories
RUN mkdir -p /home/node/.ssh /home/node/.config/gh && \
chown -R node:node /home/node/.ssh /home/node/.config/gh && \
chmod 700 /home/node/.ssh

## Set up non-root user
USER node

Expand Down
8 changes: 4 additions & 4 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"CLAUDE_CONFIG_DIR": "/home/node/.claude"
},
"mounts": [
"source=${localEnv:HOME}/.ssh,target=/home/node/.ssh,type=bind,consistency=cached",
"source=${localEnv:HOME}${localEnv:USERPROFILE}/.ssh,target=/home/node/.ssh,type=bind,consistency=cached",
"source=claude-code-bashhistory-${devcontainerId},target=/commandhistory,type=volume",
"source=claude-code-config-${devcontainerId},target=/home/node/.claude,type=volume"
],
Expand All @@ -29,7 +29,8 @@
"tabnine.tabnine-vscode",
"unifiedjs.vscode-mdx",
"vitest.explorer",
"lokalise.i18n-ally"
"lokalise.i18n-ally",
"anthropic.claude-code"
]
}
},
Expand All @@ -38,8 +39,7 @@
"forwardPorts": [5173],

// Use 'postCreateCommand' to run commands after the container is created.
"postCreateCommand": "pnpm install && pnpm exec playwright install chromium --with-deps --only-shell",
"postCreateCommand": "bash -c 'gh auth login --hostname github.com --web --scopes public_repo,read:org,workflow && pnpm install && pnpm exec playwright install chromium --with-deps --only-shell'",

// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "node"
}
3 changes: 1 addition & 2 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
"ms-vscode-remote.vscode-remote-extensionpack",
"ms-vscode-remote.remote-ssh-edit",
"ms-vscode.remote-explorer",
"vitest.explorer",
"anthropic.claude-code"
"vitest.explorer"
]
}