Imported from yingbo/charmrun (
AGENTS.md). Install upstream withnpx skills add yingbo/charmrun. Copyright stays with the author.
Agent Rules for CharmRun
Git Workflow
Branching
- Create feature branches for issue-driven work (example:
feature/issue-123-description) - Branch names must never contain
claude,agent,ai, or any other tooling identifier. A pull request page shows its source branch name to every reviewer, so a branch likeclaude/...discloses agent involvement just as surely as a commit trailer would. Rename a branch the harness created with such a prefix (git branch -m <new-name>) before opening a PR from it. - Do not merge PRs yourself; the user will review and merge
- Do not close issues yourself; the user will close them
Authorship
The repository owner is the sole author of this project. Nothing an agent produces may carry agent, AI, or tooling attribution. This is not limited to one trailer; it covers every artifact that leaves the working tree.
- NEVER add
Co-Authored-Bylines - NEVER add
Claude-Session,Generated with, or any other attribution trailer, footer, badge, or 🤖 marker - Commit author and committer must both be the repository owner:
Yingbo Miao <yingbo@users.noreply.github.com>. Checkgit config user.nameanduser.emailbefore the first commit of a session and set them if the environment supplied anything else. - The same applies to pull request titles and bodies, issue and review comments, tag messages, release notes, code comments, and documentation
- Do not credit the model, the assistant, or the session anywhere, or name
them as a contributor. Referring to an agent instruction file by its
filename (
AGENTS.md,CLAUDE.md) is fine; that is repository configuration, not authorship.
Before pushing, verify:
git log origin/main..HEAD --format='%an <%ae> | %cn <%ce>' | sort -u
git log origin/main..HEAD --format='%B' | grep -i 'claude\|anthropic\|co-authored'
The first must list only the owner. The second must return nothing.
Worktrees
- Do NOT create git worktrees unless absolutely necessary
Project Overview
VS Code extension (CharmRun) providing PyCharm-style Python run configuration management with a GUI editor. Built with TypeScript and esbuild.
Development
npm run compileto buildnpm run lintto run ESLint (flat config ineslint.config.mjs)npm run watchfor development (auto-rebuild)- F5 in VS Code launches Extension Development Host for testing
- TypeScript strict mode is enabled
- esbuild bundles to
dist/extension.js - Webview uses vanilla HTML + CSS variables for VS Code theme integration
Architecture
src/extension.ts- Entry point, wires components togethersrc/types.ts- RunConfiguration interface and related typessrc/configStore.ts- CRUD for CharmRun-managed Python entries in .vscode/launch.jsonsrc/runner.ts- Build debug configs, launch via vscode.debug.startDebuggingsrc/preRunRunner.ts- Execute before-launch steps (config/external tool/task)src/variableResolver.ts- ${workspaceFolder}, ${file}, ${env:VAR} expansionsrc/interpreterResolver.ts- Resolve Python interpreter pathsrc/treeView/- Sidebar tree view for listing configurationssrc/webview/- Webview-based GUI form editorsrc/statusBar.ts- Status bar integration (selector, run, debug buttons)src/commands.ts- All command registrations and handlers
Configuration Storage
Configs stored as CharmRun-managed entries in .vscode/launch.json per workspace folder.
Active config ID stored in VS Code's workspaceState (per-user, not committed).
