This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
These rules override all other instructions:
- NEVER commit directly to main - Always create a feature branch and submit a pull request
- Conventional commits - Format:
type(scope): description - GitHub Issues for TODOs - Use
ghCLI to manage issues, no local TODO files. Use conventional commit format for issue titles - Pull Request titles - Use conventional commit format (same as commits)
- Branch naming - Use format:
type/scope/short-description(e.g.,feat/action/new-input) - Working an issue - Always create a new branch from an updated main branch
- Check branch status before pushing - Verify the remote tracking branch still exists. If a PR was merged/deleted, create a new branch from main instead
- No co-authors - Do not add co-author information on commits or pull requests
- No "generated by" statements - Do not add generated-by statements on pull requests
gh issue list # List open issues
gh issue view <number> # View details
gh issue create --title "type(scope): description" --body "..."
gh issue close <number>| Type | Description |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation only |
refactor |
Code change that neither fixes a bug nor adds a feature |
test |
Adding or updating tests |
chore |
Maintenance tasks |
perf |
Performance improvement |
ci |
CI/CD changes |
This is a GitHub Action (CodingWithCalvin/GHA-VSVsixVersioner) that versions Visual Studio extensions (.vsix) using a date-based versioning scheme: YYYY.M.D.BuildNumber. It updates both the XML manifest (source.extension.vsixmanifest) and the C# code-behind file (source.extension.cs) that are synchronized via VSIX Synchronizer.
Important: This action only runs on Windows-based GitHub runners.
# Install dependencies
npm ci
# Run tests
npm test
# Run a single test file
npx jest __tests__/main.test.ts
# Run tests with pattern matching
npx jest -t "test name pattern"
# Lint
npm run lint
# Format code
npm run format:write
# Check formatting without changes
npm run format:check
# Build/package the action
npm run package
# Full build (format, lint, test, coverage, package)
npm run allSingle-file TypeScript GitHub Action (src/index.ts) bundled with @vercel/ncc to dist/index.js.
Flow:
- Reads
extension-manifest-fileandextension-source-fileinputs (required) - Generates version string:
YYYY.M.D.{build-number}(build-number defaults togithub.context.runNumber) - Parses XML manifest with
fast-xml-parser, updatesPackageManifest.Metadata.Identity[@Version] - Updates C# source file by replacing
Version = "x.x.x.x";pattern via regex - Outputs the generated
versionfor downstream steps
Key dependencies:
@actions/core- GitHub Action I/O and failure handling@actions/github- GitHub context (run number)fast-xml-parser- XML parsing/building for vsixmanifest
- ESLint config:
.github/linters/.eslintrc.yml - Jest config: embedded in
package.json - TypeScript:
tsconfig.json(ES2022, NodeNext modules, strict mode) - Node version: specified in
.node-versionfile (requires Node >= 21)