{"id":49282224,"url":"https://github.com/allexcd/copilot-workflow-kit","last_synced_at":"2026-04-25T19:03:36.980Z","repository":{"id":351384592,"uuid":"1209353928","full_name":"allexcd/copilot-workflow-kit","owner":"allexcd","description":"A workflow orchestration kit for GitHub Copilot. Plan first, verify before done, use subagents well.","archived":false,"fork":false,"pushed_at":"2026-04-22T18:19:23.000Z","size":162,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-22T18:35:16.560Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/allexcd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-13T10:45:29.000Z","updated_at":"2026-04-22T18:18:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/allexcd/copilot-workflow-kit","commit_stats":null,"previous_names":["allexcd/copilot-workflow-kit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/allexcd/copilot-workflow-kit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allexcd%2Fcopilot-workflow-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allexcd%2Fcopilot-workflow-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allexcd%2Fcopilot-workflow-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allexcd%2Fcopilot-workflow-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/allexcd","download_url":"https://codeload.github.com/allexcd/copilot-workflow-kit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allexcd%2Fcopilot-workflow-kit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32273224,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"ssl_error","status_checked_at":"2026-04-25T18:29:32.149Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-25T19:03:36.904Z","updated_at":"2026-04-25T19:03:36.971Z","avatar_url":"https://github.com/allexcd.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Copilot Workflow Kit\n\n[![CI](https://github.com/allexcd/copilot-workflow-kit/actions/workflows/ci.yml/badge.svg)](https://github.com/allexcd/copilot-workflow-kit/actions/workflows/ci.yml)\n[![npm version](https://img.shields.io/npm/v/copilot-workflow-kit)](https://www.npmjs.com/package/copilot-workflow-kit)\n[![npm downloads](https://img.shields.io/npm/dm/copilot-workflow-kit)](https://www.npmjs.com/package/copilot-workflow-kit)\n[![License: MIT](https://img.shields.io/npm/l/copilot-workflow-kit)](LICENSE)\n[![Node.js \u003e=20](https://img.shields.io/node/v/copilot-workflow-kit)](https://www.npmjs.com/package/copilot-workflow-kit)\n[![GitHub stars](https://img.shields.io/github/stars/allexcd/copilot-workflow-kit?style=social)](https://github.com/allexcd/copilot-workflow-kit)\n\nA workflow orchestration kit for GitHub Copilot across VS Code, Copilot Chat, Copilot CLI, custom agents, and Copilot coding agent sessions. Structured rules, agents, skills, and prompts make Copilot plan before building, verify before closing, and self-improve after corrections.\n\n## Install\n\nRun this inside your project directory:\n\n```bash\nnpx copilot-workflow-kit init\n```\n\nThis scaffolds all kit files into your project and creates a `.copilot-kit.lock` file to track versions. Run `cwk validate` any time you want to check the bundled metadata and installed lockfile shape.\n\n### Git handling\n\nIf you are in a git repository, the installer prompts you to choose how git should handle the installed files:\n\n```\n  [1] Exclude locally   — write to .git/info/exclude (your clone only)\n  [2] Add to .gitignore — shared with the team via .gitignore\n  [3] Track in git      — commit the files with the repo\n```\n\nYou can skip the prompt by passing a flag directly:\n\n```bash\nnpx copilot-workflow-kit init --git-exclude  # local-only exclusion via .git/info/exclude\nnpx copilot-workflow-kit init --gitignore    # add to .gitignore (affects the whole team)\nnpx copilot-workflow-kit init --git-track    # no git exclusion, commit files with the repo\n```\n\nGit exclusions are written as exact installed file paths. Existing files such as `.github/workflows/ci.yml` stay visible to git.\n\nIf you chose `--git-track` (or ran in a non-interactive environment), commit the scaffolded files:\n\n```bash\ngit add .github/ AGENTS.md docs/ tasks/ .copilot-kit.lock\ngit commit -m \"chore: add copilot-workflow-kit\"\n```\n\n## Update\n\nWhen a new kit version is published:\n\n```bash\nnpx copilot-workflow-kit@latest update\n```\n\nThe update command uses a **file ownership model** to preserve your customizations:\n\n| Tier | Behavior | Files |\n|------|----------|-------|\n| **Kit-managed** | Auto-updated to latest version | Skills, agents, prompts, workflow docs |\n| **User-owned** | Never overwritten by update | `copilot-instructions.md`, `AGENTS.md`, `backend.instructions.md`, `tasks/*` |\n\nKit-managed files that you modified locally are skipped with a warning. Use `--force` to overwrite them.\n\n```bash\nnpx copilot-workflow-kit@latest update --dry-run  # Preview changes without writing\nnpx copilot-workflow-kit@latest update --force     # Force-update locally modified files\n```\n\n### Automated updates via GitHub Actions\n\nThe `init` command scaffolds a GitHub Actions workflow at `.github/workflows/update-copilot-kit.yml`. It runs weekly, checks for new kit versions on npm, and opens a PR with only kit-managed file changes. No setup required — it works out of the box once committed.\n\n## Uninstall\n\nTo remove all kit-installed files from your project:\n\n```bash\nnpx copilot-workflow-kit uninstall\n```\n\nBy default this removes only **kit-managed** files (skills, agents, prompts, workflow docs) and the `.copilot-kit.lock` lockfile. **User-owned** files are left untouched. Locally modified kit-managed files are also kept by default; use `--force` only when you want to remove them too.\n\nTo remove everything — including user-owned files like `AGENTS.md`, `tasks/*`, and `copilot-instructions.md`:\n\n```bash\nnpx copilot-workflow-kit uninstall --all\n```\n\nPreview what would be removed without deleting anything:\n\n```bash\nnpx copilot-workflow-kit uninstall --dry-run\nnpx copilot-workflow-kit uninstall --all --dry-run\n```\n\nForce-remove locally modified kit-managed files:\n\n```bash\nnpx copilot-workflow-kit uninstall --force\n```\n\nEmpty directories left behind after file removal are cleaned up automatically. Directories that still contain other (non-kit) files are preserved.\n\n## Validate\n\nCheck the kit manifest, bundled templates, required skill and agent metadata, and any installed lockfile:\n\n```bash\nnpx copilot-workflow-kit validate\n```\n\nThis is useful before publishing the package or after manually editing bundled templates.\n\n## CLI Commands\n\n| Command | Purpose |\n|---------|---------|\n| `cwk init` | Scaffold all kit files — prompts for git handling if in a git repo |\n| `cwk init --git-exclude` | Scaffold and write installed paths to `.git/info/exclude` (local only) |\n| `cwk init --gitignore` | Scaffold and append installed paths to `.gitignore` |\n| `cwk init --git-track` | Scaffold only — no git exclusion, commit files with the repo |\n| `cwk init --force` | Re-scaffold all files, overwriting any existing ones |\n| `cwk update` | Update kit-managed files to the latest version |\n| `cwk update --dry-run` | Preview updates without writing any files |\n| `cwk update --force` | Force-update even locally modified kit-managed files |\n| `cwk status` | Show the state of each kit file (up-to-date, modified, outdated) |\n| `cwk diff` | Show differences between installed and latest kit files |\n| `cwk diff --all` | Include user-owned files in diff output (suggested changes) |\n| `cwk validate` | Validate manifest/template parity, metadata, and lockfile shape |\n| `cwk uninstall` | Remove kit-managed files and the lockfile |\n| `cwk uninstall --all` | Also remove user-owned files (full cleanup) |\n| `cwk uninstall --dry-run` | Preview what would be removed without deleting |\n| `cwk uninstall --force` | Remove locally modified kit-managed files too |\n\n`cwk` is an alias for `copilot-workflow-kit`.\n\n## Customizing the Kit\n\n**User-owned files** are yours to modify freely. They are scaffolded once and never touched by `update`:\n\n- `.github/copilot-instructions.md` — Add project-specific rules\n- `.github/instructions/backend.instructions.md` — Adapt to your language/framework\n- `AGENTS.md` — Add project-specific agent defaults\n- `tasks/todo.md`, `tasks/lessons.md` — Used during development\n\n**Kit-managed files** receive upstream improvements automatically. If you need to customize a skill, agent, or prompt:\n\n1. Create a *new* file alongside the kit version (e.g., `.github/skills/my-custom-skill/SKILL.md`)\n2. Leave kit-managed originals untouched so `update` continues to work\n\nThis way your customizations live alongside the kit without conflicts.\n\n## File Map\n\n| Files | Purpose | Ownership |\n|---|---|---|\n| `.github/copilot-instructions.md` | Repository-wide Copilot behavior | User-owned |\n| `.github/instructions/backend.instructions.md` | Language/framework code rules | User-owned |\n| `AGENTS.md` | Default instructions for agents | User-owned |\n| `.github/agents/*.agent.md` | Custom Copilot agents for implementation and review | Kit-managed |\n| `.github/skills/*/SKILL.md` | Reusable workflows with required skill metadata | Kit-managed |\n| `.github/prompts/*.prompt.md` | Task kickoff, verification, and elegance prompts | Kit-managed |\n| `docs/workflow/workflow-orchestration.md` | Full workflow rules for Chat, CLI, and cloud agent sessions | Kit-managed |\n| `tasks/todo.md` | Active plan and verification checklist | User-owned |\n| `tasks/lessons.md` | Correction patterns and prevention rules | User-owned |\n| `.github/workflows/update-copilot-kit.yml` | Weekly automated kit update PR | User-owned |\n| `.copilot-kit.lock` | Installed file hashes and ownership | Generated |\n\n## Compatibility\n\nUses repository files that Copilot can auto-load:\n- `.github/copilot-instructions.md`\n- `.github/instructions/*.instructions.md`\n- `.github/prompts/*.prompt.md`\n- `AGENTS.md`\n\nAlso includes:\n- `.github/agents/*.agent.md` custom-agent definitions with `name`, `description`, and tool aliases.\n- `.github/skills/*/SKILL.md` Agent Skill definitions with `name` and `description` frontmatter.\n- Optional guidance for Copilot coding agent setup via `.github/workflows/copilot-setup-steps.yml`; add this file in your project only when the cloud agent needs custom dependencies or setup steps.\n- Optional hook guidance in `docs/workflow/workflow-orchestration.md`; hooks are not scaffolded by default because they should be small, explicit guardrails.\n\n## Complementary Tools\n\n**GitHub CLI Agent Skills** — Newer GitHub CLI versions include `gh skill` for managing Copilot Agent Skills. Use `gh skill --help` when your installed `gh` supports it. The command is not available in GitHub CLI `2.89.0`; install a newer release before relying on it in setup docs or automation.\n\n**[caveman](https://github.com/JuliusBrussee/caveman)** — Reduces LLM output tokens by ~65% via terse responses. Orthogonal to this kit.\n\n```bash\nnpx skills add JuliusBrussee/caveman -a github-copilot\n```\n\n**[graphify](https://github.com/safishamsi/graphify)** — Reduces LLM input tokens via knowledge graph. 71x fewer tokens per query on large codebases.\n\n```bash\npip install graphifyy \u0026\u0026 graphify install --platform copilot\n```\n\n## Contributing\n\n### Commit Types\n\nThe following types are used in branch names, PR titles, and commit messages:\n\n| Type | When to use |\n|------|-------------|\n| `feat` | Adding a new feature or capability |\n| `fix` | Fixing a bug or broken behavior |\n| `chore` | Maintenance, configuration, or tooling — no production code change |\n| `docs` | Documentation only — no code changes |\n| `refactor` | Restructuring code without changing its external behavior |\n| `test` | Adding, updating, or fixing tests |\n| `perf` | A change that improves performance |\n| `ci` | Changes to CI/CD configuration or pipeline |\n| `build` | Changes that affect the build system or dependencies |\n| `revert` | Reverting a previous commit |\n| `hotfix` | Urgent fix that needs to go out immediately |\n\n### Branch Names\n\nBranches must follow this pattern:\n\n```\n\u003ctype\u003e/\u003cshort-description\u003e\n```\n\n| Type | When to use |\n|------|-------------|\n| `feat` | Adding a new feature |\n| `fix` | Fixing a bug |\n| `chore` | Maintenance, config, tooling — no production code change |\n| `docs` | Documentation only |\n| `refactor` | Code change that neither fixes a bug nor adds a feature |\n| `test` | Adding or updating tests |\n| `hotfix` | Urgent fix going directly toward release |\n\nRules:\n- Lowercase and hyphens only — no uppercase, no underscores, no spaces\n- Description must be between 2 and 5 words\n- Keep it descriptive enough to understand at a glance\n\nExamples:\n```\nfeat/add-oauth-login\nfix/token-expiry-crash\nchore/update-deps\ndocs/improve-readme\nrefactor/simplify-update-logic\ntest/add-status-unit-tests\nhotfix/fix-broken-publish\n```\n\n### PR Titles\n\nPull request titles must follow [Conventional Commits](https://www.conventionalcommits.org/) format:\n\n```\n\u003ctype\u003e(\u003cscope\u003e): [TICKET-123] - \u003cshort description\u003e\n```\n\n| Part | Required | Example |\n|------|----------|---------|\n| `type` | Yes | `feat`, `fix`, `chore`, `docs`, `refactor`, `test`, `perf`, `ci`, `build`, `revert` |\n| `(scope)` | No | `(auth)`, `(api)`, `(cli)` — the area of the codebase affected |\n| `[TICKET-123]` | No | Your issue or ticket reference |\n| `short description` | Yes | Lowercase, no trailing period, imperative tense |\n\nRules:\n- Description must be lowercase and must not end with a period\n- Total title must be 72 characters or fewer\n- Use imperative tense: \"add feature\", not \"added feature\" or \"adding feature\"\n- Scope is optional but encouraged when the change targets a specific area\n\nBoth formats pass CI validation:\n```\n# without scope — works fine when the change spans multiple areas\ndocs: update contributing section with naming conventions\n\n# with scope — preferred when the change targets a specific file or module\ndocs(readme): update contributing section with naming conventions\n```\n\nMore examples:\n```\nfeat(auth): [PROJ-123] - add OAuth2 login with Google\nfix(api): [PROJ-456] - handle null response from payment service\nchore(deps): bump lodash to 4.17.21\ndocs(readme): update contributing section with naming conventions\nrefactor(cli): simplify flag parsing logic\ntest(update): add unit tests for hash-based state machine\n```\n\n### Commit Messages\n\nCommit messages follow the same format as PR titles.\n\n```\n\u003ctype\u003e(\u003cscope\u003e): [TICKET-123] - \u003cshort description\u003e\n\nOptional body explaining WHY the change was made, if not obvious from the subject.\n```\n\nRules:\n- Subject line: 50 characters or fewer\n- Body: add only when the *why* is not obvious — \"what\" is visible in the diff, \"why\" is not\n- Separate subject and body with a blank line\n- Wrap the body at 72 characters per line\n- Use imperative tense in the subject: \"fix crash\", not \"fixed crash\"\n- Scope is optional — use it when the change targets a specific file or module\n\nBoth formats are valid:\n```\n# without scope\ndocs: update contributing section with naming conventions\n\n# with scope — clearer when a specific area is affected\ndocs(readme): update contributing section with naming conventions\n```\n\nMore examples:\n```\nfeat(auth): [PROJ-123] - add OAuth2 login with Google\n\nfix(api): [PROJ-456] - handle null response from payment service\n\nSwitched to optional chaining on the response body to avoid crashes\nwhen the payment provider returns a 204 with no content.\n\nchore(deps): bump lodash from 4.17.20 to 4.17.21\n\ndocs(readme): update contributing section with naming conventions\n```\n\n### Merging Rules\n\n| Rule | When enforced |\n|------|---------------|\n| Branch name pattern | On `git push` — push rejected immediately |\n| PR title format | On PR open/edit — CI check blocks merge |\n| Lint | On PR open + every new commit — CI check blocks merge |\n| Tests (Node 18, 20, 22) | On PR open + every new commit — CI check blocks merge |\n| Build / pack check | On PR open + every new commit — CI check blocks merge |\n| 1 approval required | At merge time |\n| Stale approval on new push | At merge time — approval dismissed, re-review required |\n| No direct push to `main` | On `git push` — push rejected immediately |\n\nThese rules are enforced by:\n- `.github/workflows/branch-ruleset.yml` — applies a GitHub Ruleset via API (branch naming, push protection, required status checks, approvals)\n- `.github/workflows/pr-title.yml` — validates PR title format on every PR\n- `.github/workflows/ci.yml` — runs lint, tests, and build checks\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallexcd%2Fcopilot-workflow-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fallexcd%2Fcopilot-workflow-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallexcd%2Fcopilot-workflow-kit/lists"}