Files
vercel__vercel-plugin/hooks/shared-contractions.mjs
John Lindquist 8e24d0694a feat: add chainTo skill chaining, prompt signals, validation upgrades, and dedup reset on context clear
Add a chainTo frontmatter field to skills that triggers follow-up skill injection
when PostToolUse file contents match regex patterns. Add upgradeToSkill/upgradeWhy
fields to validation rules so validate errors can recommend loading a specific skill.
Register posttooluse-bash-chain.mjs in hooks.json. Add ChainToRule interface to
patterns.mts and skill-map-frontmatter.mts, with parseChainToRules() parser. Add
duplicate-key detection to the YAML parser. Reset dedup claim dir and session file
on clear/compact events in session-start-seen-skills so skills re-inject into fresh
context windows.

Add chainTo rules to: agent-browser-verify, agent-browser, ai-elements, ai-gateway,
ai-generation-persistence, ai-sdk, auth, bootstrap, chat-sdk, cms, cron-jobs,
deployments-cicd, email, env-vars, geist, investigation-mode, json-render,
marketplace, micro, ncc, next-forge, nextjs, observability, payments,
react-best-practices, routing-middleware, runtime-cache, satori, shadcn,
sign-in-with-vercel, swr, turbopack, turborepo, v0-dev, vercel-agent, vercel-api,
vercel-cli, vercel-firewall, vercel-flags, vercel-functions, vercel-queues,
vercel-sandbox, vercel-storage, verification, workflow. Add upgradeToSkill to
ai-elements and ai-sdk validate rules. Expand ai-sdk validate messages with
Run Skill() hints. Update nextjs, vercel-storage, runtime-cache, workflow, turborepo
skill bodies.

Add new skills: geistdocs (Geist design system docs), zzz-test-meta-name-mask
(test fixture). Add skills/_chain-audit.md chain coverage audit doc.

Delete .claude-plugin/marketplace.json, .claude-plugin/plugin.json (deprecated),
skills/edge-runtime/SKILL.md (consolidated into vercel-functions).

Add tests: posttooluse-chain.test.ts (4699 lines, chain injection e2e),
ai-sdk-companion.test.ts (181 lines). Expand build-skill-map.test.ts (+335 lines),
validate-rules.test.ts (+936 lines), session-start-seen-skills.test.ts (+74 lines),
skill-map-frontmatter.test.ts (+50 lines), verification-skill.test.ts (+20 lines).

Update build-manifest.ts to emit chainTo rules and upgradeToSkill fields. Rebuild
generated/skill-manifest.json, generated/skill-catalog.md, generated/build-from-skills.manifest.json.
Rebuild all compiled hooks/*.mjs. Update CLAUDE.md lexical prompt default to on.
Update vercel.md ecosystem graph, docs, and cli-reference.
2026-03-11 15:18:35 -06:00

68 lines
1.4 KiB
JavaScript

// hooks/src/shared-contractions.mts
var CONTRACTIONS = {
// apostrophe forms
"it's": "it is",
"what's": "what is",
"where's": "where is",
"that's": "that is",
"there's": "there is",
"who's": "who is",
"how's": "how is",
"i'm": "i am",
"isn't": "is not",
"aren't": "are not",
"wasn't": "was not",
"weren't": "were not",
"doesn't": "does not",
"don't": "do not",
"didn't": "did not",
"won't": "will not",
"can't": "cannot",
"couldn't": "could not",
"wouldn't": "would not",
"shouldn't": "should not",
"hasn't": "has not",
"haven't": "have not",
"you're": "you are",
"we're": "we are",
"they're": "they are",
"it'll": "it will",
"i've": "i have",
"you've": "you have",
"we've": "we have",
"they've": "they have",
"they'll": "they will",
"who'll": "who will",
"let's": "let us",
// apostrophe-free variants (casual typing)
im: "i am",
isnt: "is not",
arent: "are not",
wasnt: "was not",
werent: "were not",
doesnt: "does not",
dont: "do not",
didnt: "did not",
wont: "will not",
cant: "cannot",
couldnt: "could not",
wouldnt: "would not",
shouldnt: "should not",
hasnt: "has not",
havent: "have not",
youre: "you are",
were: "we are",
theyre: "they are",
itll: "it will",
ive: "i have",
youve: "you have",
weve: "we have",
theyve: "they have",
theyll: "they will",
wholl: "who will",
lets: "let us"
};
export {
CONTRACTIONS
};