Skip to content

feat: full Copilot CLI skill parity with Claude integration#63

Closed
bilersan wants to merge 1 commit intoActiveMemory:mainfrom
bilersan:feat/copilot-cli-skill-parity-v2
Closed

feat: full Copilot CLI skill parity with Claude integration#63
bilersan wants to merge 1 commit intoActiveMemory:mainfrom
bilersan:feat/copilot-cli-skill-parity-v2

Conversation

@bilersan
Copy link
Copy Markdown
Contributor

@bilersan bilersan commented Apr 9, 2026

Closes #61

Full Copilot CLI skill parity: ports all 40 Claude skills to Copilot CLI format.
Rebased cleanly on upstream/main — no conflicts.

What changed (51 files, +3337/-353)

Component Count
Skill SKILL.md files (new) 35
Skill SKILL.md files (updated) 5
Hook scripts (bash + PS1) 8
Infrastructure (INSTRUCTIONS.md, ctx-hooks.json) 2
Spec document 1
Total 51

Skills (40 total, matching Claude 1:1)

_ctx-alignment-audit, ctx-add-convention, ctx-add-decision, ctx-add-learning, ctx-add-task, ctx-agent, ctx-architecture, ctx-archive, ctx-blog, ctx-blog-changelog, ctx-brainstorm, ctx-check-links, ctx-commit, ctx-consolidate, ctx-doctor, ctx-drift, ctx-implement, ctx-import-plans, ctx-journal-enrich, ctx-journal-enrich-all, ctx-journal-normalize, ctx-loop, ctx-next, ctx-pad, ctx-pause, ctx-prompt, ctx-prompt-audit, ctx-recall, ctx-reflect, ctx-remember, ctx-remind, ctx-resume, ctx-sanitize-permissions, ctx-skill-audit, ctx-skill-creator, ctx-spec, ctx-status, ctx-verify, ctx-worktree, ctx-wrap-up

Format adaptation

Claude: allowed-tools: Bash(ctx:*), Read (string)
Copilot CLI: tools: [bash, read, write, edit, glob, grep] (YAML array)

Verification

  • go build passes
  • go vet ./... clean
  • go test ./internal/assets/... passes
  • All 40 skill names match Claude 1:1
  • Rebased on upstream/main — zero conflicts
  • DCO signed-off

Note: pre-commit compliance hook has 6 pre-existing staticcheck SA5011 warnings in upstream test files (not introduced by this PR).

Signed-off-by: ersan bilik ersanbilik@gmail.com
Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

Port all 40 Claude skills to Copilot CLI format with proper YAML
frontmatter (tools array instead of allowed-tools string). Includes
lifecycle hook scripts (bash + PowerShell), agent instructions, and
hook configuration.

Contents:
- 40 skill SKILL.md files under integrations/copilot-cli/skills/
- 8 hook scripts (session-start/end, pre/post-tool-use × bash/ps1)
- INSTRUCTIONS.md agent bootstrap instructions
- ctx-hooks.json lifecycle hook configuration
- Updated embed.go to include integrations assets
- Parity spec document (specs/copilot-feature-parity-kit.md)

Signed-off-by: ersan bilik <ersanbilik@gmail.com>

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: ersan bilik <ersanbilik@gmail.com>
@bilersan bilersan requested a review from josealekhine as a code owner April 9, 2026 22:18
@josealekhine
Copy link
Copy Markdown
Member

@bilersan I'm seriously backlogged and having a hard time bending the space-time continuum.

I'll look at this early next week, hopefully.

@v0lkan
Copy link
Copy Markdown

v0lkan commented Apr 14, 2026

Hey @bilersan — main had moved 31 commits ahead since this PR was opened, so branch protection was gating the merge on a refreshed CI run. I've rebased your commit onto current main as-is (authorship preserved) and pushed it to feat/copilot-cli-skill-parity-rebased:

  • Cherry-picked your commit 7cc3d0a4 onto current main (5958e558)
  • No conflicts, no code changes needed
  • Local make lint and make test both clean against current main

Would you prefer to:

  1. Have us open a new PR from feat/copilot-cli-skill-parity-rebased and close this one, or
  2. Update this PR yourself by rebasing feat/copilot-cli-skill-parity-v2 onto main (git rebase origin/main && git push --force-with-lease)?

Happy either way — your call. Thanks for the contribution!

@bilersan
Copy link
Copy Markdown
Contributor Author

Hey @bilersan — main had moved 31 commits ahead since this PR was opened, so branch protection was gating the merge on a refreshed CI run. I've rebased your commit onto current main as-is (authorship preserved) and pushed it to feat/copilot-cli-skill-parity-rebased:

  • Cherry-picked your commit 7cc3d0a4 onto current main (5958e558)
  • No conflicts, no code changes needed
  • Local make lint and make test both clean against current main

Would you prefer to:

  1. Have us open a new PR from feat/copilot-cli-skill-parity-rebased and close this one, or
  2. Update this PR yourself by rebasing feat/copilot-cli-skill-parity-v2 onto main (git rebase origin/main && git push --force-with-lease)?

Happy either way — your call. Thanks for the contribution!

will handle pr myself tonite ist time ^^ thanks

v0lkan pushed a commit that referenced this pull request Apr 14, 2026
Combines two in-flight workstreams into one commit.

## Docstring namespace sweep (parallel agent)

Follow-up to the CLI namespace cleanup in 78fbdf7. Updates
doc comments, blog posts, recipes, and the regenerated site to
reflect current command names (e.g. `ctx pause` → `ctx hook pause`,
`ctx resume` → `ctx hook resume`, `ctx message` → `ctx hook message`).
Also refreshes the Copilot CLI integration skills added in
edaac81 (PR #63) to match the new namespace.

Scope: ~450 files across docs/, site/, internal/cli, internal/write,
internal/config, .github/, integration skill templates, and .claude/
skill SKILL.md files.

## Git push regex hardening (this session)

The `block-dangerous-command` hook's `MidGitPush` regex only matched
`git push` mid-command after `;`, `&&`, or `||`. This session
accidentally bypassed it with `git -C <path> push` — the permissions
deny list `Bash(git push *)` only matches prefix `git push`, so
`git -C <path> push` also slipped through.

Replace `MidGitPush` with a broader `GitPush` that covers:

- Bare `git push` at command start
- All separator and subshell entry points (`;`, `&&`, `||`, `|`, `&`,
  `(`, `$(`, backtick, newline)
- Env-var and command-wrapper prefixes (`GIT_DIR=/x git push`,
  `time git push`, `nice git push`)
- Any flag shape between `git` and `push` (`-C path`, `-c key=val`,
  `--git-dir=/path`, `--no-pager`, `--bare`, `-p`, `-P`)
- Tail anchor that distinguishes subcommand from ref names
  (`push-to-remote`, `push_branch`) via `[^a-zA-Z0-9._/-]|$`

Documented trade-offs: accepted false positives on `git log push`
and `git commit -m push` (push as literal arg); known blind spots
for `eval` / `sh -c` quoting and shell aliases.

Adds `internal/config/regex/cmd_test.go` with 42 table-driven cases
covering all entry points, flag shapes, prefixes, negative cases
(other subcommands, ref-name continuations), and the accepted
false-positive classes.

Renames the Go symbol `MidGitPush` → `GitPush` to accurately
reflect scope; keeps legacy variant string `mid-git-push` and text
key `block.mid-git-push` (user-facing message is already generic:
"git push requires explicit user approval").

Spec: specs/git-push-regex-hardening.md
Spec: specs/cli-namespace-cleanup.md
Signed-off-by: Jose Alekhinne <jose@parlakisik.com>
@josealekhine
Copy link
Copy Markdown
Member

@bilersan took your changes into #68.

Nothing is lost; everything moved around.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Copilot CLI skill parity with Claude integration

3 participants