con un clic
git-style
// Load before any git commit, git push, PR creation, or PR editing in ~/vercel/* repositories. Load this skill as a prerequisite, not an afterthought.
// Load before any git commit, git push, PR creation, or PR editing in ~/vercel/* repositories. Load this skill as a prerequisite, not an afterthought.
Git worktree management via the `wt` CLI. Use when asked to create worktrees, switch branches for parallel work, list worktrees, clean up old branches, or merge worktree branches. Triggers on "worktree", "worktrunk", "wt", "create branch", "new branch", "switch branch", "parallel branch".
Interact with Linear project management to search issues, create/update tickets, view projects, teams, and cycles. Use when managing tasks, tracking work, or querying Linear data.
Use when creating a PR or pushing updates to an existing PR. Monitors CI status checks and handles failures.
| name | git-style |
| description | Load before any git commit, git push, PR creation, or PR editing in ~/vercel/* repositories. Load this skill as a prerequisite, not an afterthought. |
Enforces matchai's PR title, commit message, and PR body conventions derived from Vercel repo history.
| Repo Type | Style | Example |
|---|---|---|
| Monorepo with conventional commits | type(scope): message | feat(agent): add skill loading |
| Monorepo without conventional commits | [scope] Message | [subscriber-omniagent] Add webhook forwarding |
| Single-package repo | Plain imperative | Fix session page 404 for GitHub thread sessions |
Detection: Check git log -30 --oneline before committing. Match the dominant style.
feat(agent): add ... not feat(agent): Add ...Fix the thing not fix the thingOnly use when the repo already uses them (check git log first):
| Type | When |
|---|---|
feat | New capability |
fix | Bug fix |
refactor | Code restructuring, no behavior change |
chore | Dependencies, config, CI |
docs | Documentation only |
test | Test additions/changes only |
perf | Performance improvement |
agent, web, knowledge, flags, evals[subscriber-omniagent], [secrets-management]PR titles follow the same style as commit messages. Check git log -30 --oneline and match the dominant style. If the repo uses conventional commits, the PR title should too.
Format: [scope] lowercase description
[agent] replace tsvector page collection search with LLM filtering
[web] add responsive right panel for mobile
[knowledge] prevent cache poisoning from transient fetch failures
[subscriber-omniagent] Fix webhook forward route to match omniagent endpoint
[secrets-management] add subscriber-omniagent to external ACL
feat:, fix:)Format: Revert "[original title] (#number)"
Plain prose. No headers. Paragraphs and bullet points are enough.
Extends subscriber-omniagent's webhook enrichment to resolve the GitHub commenter to a Vercel user and mint a short-lived (15m) Vercel API token scoped to their team.
Allows Omniagent to use the Vercel CLI on behalf of the commenter — same capabilities as the Slack integration.
Also replaces the bulk of logging with tracing.
Bullets are fine inline — just don't wrap them in a ## Summary header:
Fixes the omniagent webhook forward URL from `/api/github/webhooks` to `/api/github` to match the actual route in the omniagent app.
Use bold text for subsections, not markdown headers. Headers are too heavy for PR bodies. Only reach for ### if the PR is exceptionally complex (5+ distinct areas).
Forward select GitHub webhook events for select repos to omniagent's `/api/github` endpoint.
**Approach**
Uses the existing proxy system in `src/utils/proxy/` that already forwards events to spaces, v0, grep, and code-review. Omniagent is added as another proxy target with body-aware filtering.
**Changes**
- `proxy-webhook-event.ts` — extends `ProxyTarget` with optional `enrichHeaders` hook
- `filter-event.ts` — adds `issue_comment` as allowed omniagent event
- `target-urls.ts` — adds `getOmniagentUrl()`
For features with components/modules, use a table:
| Skill | Tools |
|-------|-------|
| billing | refundInvoice, modifyInvoice |
| domains | domainAssist |
| Element | When | Format |
|---|---|---|
| Ticket reference | Always if ticket exists | Closes SPE-XXXX or Part of SPE-XXXX |
| Stacked PR | When building on another PR | Stacks on PR #XXXX |
| Companion PR | Cross-repo dependency | Companion PR: vercel/integrations -- slug |
| Test results | When adding empirical validation | Table with pass rates |
## headers — use ### at most, and only for large/complex PRsSome orgs require verified (GPG/SSH-signed) commits. When a branch contains unsigned commits (from tools, collaborators, or automated workflows), the push will be rejected. Re-sign before pushing.
git rebase --exec 'git commit --amend --no-edit -S' -i <base>
<base> is the commit where the unsigned commits start (e.g., main, HEAD~5, or a specific hash). This re-signs every commit after <base> using your signing key.
git add + git rebase --continue)--force-with-lease afterward (commits are rewritten)git log --format='%h %G? %s' (G = good signature)If you're merging an unsigned branch and want to preserve individual commits (not squash), rebase the branch onto your target first:
git rebase --exec 'git commit --amend --no-edit -S' -i <target> <unsigned-branch> --onto <target>
Then fast-forward merge. If you only need to sign the merge commit itself:
git merge --no-ff -S <branch>
When a meaningful change is made to a PR after creation (new commits, scope change, added/removed features), update the PR title and body to reflect the current state.
gh pr view <number> to read the current title and body — match the existing tone and structure