[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71FWTM37JPHKJKBQM2SV7FN":3,"skill-same:01M71FWTM37JPHKJKBQM2SV7FN":61},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":6,"ownerHtmlUrl":45,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":46,"install":47,"resources":60},"01M71FWTM37JPHKJKBQM2SV7FN","handoff-pack",null,"Generates structured Handoff Pack prompts for delegating work to Gemini with clear scope, acceptance criteria, and output format requirements.","JSGforever\u002Fskillguard","JSGforever","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F85541948?v=4","01M71FQD3E132VMR5F4TAYX3YS","01M71FQD4DYW0XJ4XQ4YQH75Y9",2,"GPL-3.0","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__BerryKuipers--handoff-pack\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"handoff","pack","handoff pack","structured","prompts","structured handoff","clear","format","acceptance criteria","with","output","requirements","for","gemini","work","acceptance","scope","2026-11-10 10:12:30",false,"---\nname: handoff-pack\ndescription: Generates structured Handoff Pack prompts for delegating work to Gemini with clear scope, acceptance criteria, and output format requirements.\n---\n\n# Handoff Pack Generator\n\n## Purpose\n\nGenerate well-structured prompts (\"Handoff Packs\") for delegating scoped work to Gemini, ensuring clear instructions, verifiable acceptance criteria, and parseable output format.\n\n## When to Use\n\n- Called by `gemini-delegation` agent after user approves delegation\n- User wants to manually generate a handoff prompt\n- Need to create a fix-up prompt after failed verification\n\n## Handoff Pack Structure\n\nA complete Handoff Pack has these sections:\n\n### 1. Session Context\n\n```markdown\n# Gemini Handoff Pack\n\n## Session Context\n- **Delegated By**: Claude Cloud Agent\n- **Delegation ID**: [YYYYMMDD-HHMMSS-hash]\n- **Project**: [repo name]\n- **Branch**: [current branch]\n```\n\n### 2. Scope Definition\n\n```markdown\n## Allowed Scope\n\n**You may ONLY modify these paths:**\n```\nsrc\u002Ffeatures\u002Fuser\u002F*.ts\nsrc\u002Ffeatures\u002Fuser\u002F**\u002F*.test.ts\n```\n\n**You may NOT:**\n- Modify files outside the allowed scope\n- Change function signatures or public APIs\n- Delete existing functionality\n- Add new dependencies\n- Modify configuration files\n```\n\n### 3. Task Instructions\n\n```markdown\n## Task Instructions\n\n**Objective**: [Clear, specific, measurable objective]\n\n**Context**: [Why this work is needed, background info]\n\n**Pattern to Follow**:\n\n```typescript\n\u002F\u002F === BEFORE ===\nexport function calculateTotal(items: Item[]): number {\n  return items.reduce((sum, item) => sum + item.price, 0);\n}\n\n\u002F\u002F === AFTER ===\n\u002F**\n * Calculates the total price of all items.\n * @param items - Array of items with price property\n * @returns Total price as a number\n *\u002F\nexport function calculateTotal(items: Item[]): number {\n  return items.reduce((sum, item) => sum + item.price, 0);\n}\n```\n\n**Apply this pattern to:**\n- All exported functions in scope\n- Skip private\u002Finternal functions (no export keyword)\n- Preserve existing JSDoc if present (don't duplicate)\n```\n\n### 4. Acceptance Criteria\n\n```markdown\n## Acceptance Criteria\n\nBefore reporting completion, ALL of these must pass:\n\n```bash\n# TypeScript compilation (required)\nnpx tsc --noEmit\n\n# Linting (required)\nnpm run lint\n# OR: pnpm lint\n# OR: yarn lint\n\n# Tests (if applicable)\nnpm test -- --passWithNoTests\n# OR: pnpm test\n# OR: yarn test\n```\n\n**Success means:**\n- Zero TypeScript errors\n- Zero lint errors (warnings acceptable)\n- All tests pass (or none affected)\n\n**If any fail:**\n1. Fix the issue\n2. Re-run the check\n3. Only report when ALL pass\n```\n\n### 5. Output Format\n\n```markdown\n## Required Output Format\n\nWhen complete, provide this EXACT format:\n\n```markdown\n## Gemini Completion Report\n\n### Delegation ID\n[same ID from Session Context]\n\n### Files Modified\n- `path\u002Fto\u002Ffile1.ts` - Added JSDoc to 3 functions\n- `path\u002Fto\u002Ffile2.ts` - Added JSDoc to 5 functions\n- `path\u002Fto\u002Ffile3.ts` - Added JSDoc to 2 functions\n\n### Commands Run\n- `npx tsc --noEmit` - ✅ Passed\n- `npm run lint` - ✅ Passed\n- `npm test` - ✅ Passed (or N\u002FA)\n\n### Diff Summary\n```\n src\u002Ffeatures\u002Fuser\u002Fservice.ts  | 45 +++++++++++++++++++++\n src\u002Ffeatures\u002Fuser\u002Ftypes.ts    | 12 ++++++\n src\u002Ffeatures\u002Fuser\u002Futils.ts    | 18 +++++++++\n 3 files changed, 75 insertions(+)\n```\n\n### Notes\n[Any decisions made, edge cases encountered, or observations]\n\n### Escalations (if any)\n[Items that need Cloud review - unclear patterns, security concerns, etc.]\n```\n```\n\n### 6. Guardrails\n\n```markdown\n## Guardrails\n\n⚠️ **STOP and report as Escalation** if you encounter:\n\n1. **Unclear patterns** - Need architectural decision\n2. **Business logic changes** - Beyond scope of delegation\n3. **Security-sensitive code** - Auth, crypto, validation, secrets\n4. **Breaking changes** - Would change public API behavior\n5. **Cross-cutting concerns** - Changes ripple outside scope\n6. **Dependency changes** - Package.json modifications needed\n\n**How to escalate:**\n\n```markdown\n### Escalations\n1. **File**: `src\u002Ffeatures\u002Fuser\u002Fauth.ts`\n   **Issue**: Contains password hashing logic - security sensitive\n   **Recommendation**: Skip this file, let Cloud handle\n\n2. **Pattern unclear**: `src\u002Ffeatures\u002Fuser\u002Flegacy.ts`\n   **Issue**: Mixed export styles, unclear which to document\n   **Recommendation**: Clarify pattern before proceeding\n```\n\nDo NOT guess on escalation items. Report and skip.\n```\n\n## Instructions\n\n### Generating a New Handoff Pack\n\n**Input required:**\n- Task description\n- Scope (file patterns)\n- Triage score (for context)\n- Acceptance commands (auto-detected or specified)\n\n**Process:**\n\n1. **Detect project type:**\n```bash\n# Check for package.json\nif [ -f \"package.json\" ]; then\n  PKG_MANAGER=\"npm\"\n  [ -f \"pnpm-lock.yaml\" ] && PKG_MANAGER=\"pnpm\"\n  [ -f \"yarn.lock\" ] && PKG_MANAGER=\"yarn\"\nfi\n```\n\n2. **Generate delegation ID:**\n```bash\nDELEGATION_ID=\"$(date +%Y%m%d-%H%M%S)-$(echo \"$TASK\" | md5sum | cut -c1-8)\"\n```\n\n3. **Build scope section** from provided path patterns\n\n4. **Create before\u002Fafter examples** from existing code in scope\n\n5. **Add appropriate acceptance criteria** based on project type\n\n6. **Include guardrails section** (always)\n\n### Generating a Fix-Up Pack\n\nWhen verification fails, generate a minimal fix-up pack:\n\n```markdown\n# Gemini Fix-Up Pack\n\n## Previous Delegation\n- **Original ID**: [original delegation ID]\n- **Fix-Up ID**: [new ID]\n\n## Issues to Fix\n\n### Issue 1: [Category]\n**File**: `path\u002Fto\u002Ffile.ts`\n**Error**: [exact error message]\n**Fix**: [specific instruction]\n\n### Issue 2: [Category]\n**File**: `path\u002Fto\u002Ffile2.ts`\n**Error**: [exact error message]\n**Fix**: [specific instruction]\n\n## After Fixes\n\nRe-run verification:\n```bash\nnpx tsc --noEmit\nnpm run lint\n```\n\n## Report Format\n\n```markdown\n## Fix-Up Report\n\n### Original Delegation ID\n[id]\n\n### Issues Fixed\n- Issue 1: ✅ Fixed - [what was done]\n- Issue 2: ✅ Fixed - [what was done]\n\n### Verification\n- `npx tsc --noEmit` - ✅ Passed\n- `npm run lint` - ✅ Passed\n\n### Notes\n[Any additional context]\n```\n```\n\n## Templates\n\n### Template: Documentation Addition\n\n```markdown\n# Gemini Handoff Pack\n\n## Session Context\n- **Delegated By**: Claude Cloud Agent\n- **Delegation ID**: {{DELEGATION_ID}}\n- **Project**: {{PROJECT_NAME}}\n\n## Allowed Scope\n```\n{{SCOPE_PATTERNS}}\n```\n\n**You may NOT:**\n- Modify files outside scope\n- Change any code logic\n- Modify function signatures\n\n## Task Instructions\n\n**Objective**: Add JSDoc documentation to all exported functions\n\n**Pattern**:\n```typescript\n\u002F\u002F BEFORE\nexport function myFunction(param: Type): ReturnType {\n\n\u002F\u002F AFTER\n\u002F**\n * Brief description of what the function does.\n * @param param - Description of parameter\n * @returns Description of return value\n *\u002F\nexport function myFunction(param: Type): ReturnType {\n```\n\n**Rules:**\n- Only document exported functions (has `export` keyword)\n- Keep descriptions concise (1 line for simple functions)\n- Use existing code to infer parameter\u002Freturn descriptions\n- Preserve any existing documentation\n\n## Acceptance Criteria\n```bash\nnpx tsc --noEmit\n{{PKG_MANAGER}} run lint\n```\n\n## Required Output Format\n[Standard completion report format]\n\n## Guardrails\n[Standard guardrails]\n```\n\n### Template: Rename\u002FReplace\n\n```markdown\n# Gemini Handoff Pack\n\n## Session Context\n[standard]\n\n## Allowed Scope\n```\n{{SCOPE_PATTERNS}}\n```\n\n## Task Instructions\n\n**Objective**: Rename `{{OLD_NAME}}` to `{{NEW_NAME}}` across all files in scope\n\n**What to rename:**\n- Variable declarations\n- Function parameters\n- Object properties\n- Type\u002Finterface properties\n- Import\u002Fexport statements\n- String literals in specific contexts (specify)\n\n**What NOT to rename:**\n- Comments (unless referencing the identifier)\n- String literals (unless confirmed as identifiers)\n- External API calls\n\n## Acceptance Criteria\n```bash\nnpx tsc --noEmit  # Must pass - catches missed renames\n{{PKG_MANAGER}} run lint\n{{PKG_MANAGER}} test\n```\n\n## Required Output Format\n[Standard]\n\n## Guardrails\n[Standard]\n```\n\n### Template: Type Hardening\n\n```markdown\n# Gemini Handoff Pack\n\n## Session Context\n- **Delegated By**: Claude Cloud Agent\n- **Delegation ID**: {{DELEGATION_ID}}\n- **Project**: {{PROJECT_NAME}}\n- **Reference Skill**: `.claude\u002Fskills\u002Fquality\u002Ftype-hardening\u002FSKILL.md`\n\n## Allowed Scope\n```\n{{SCOPE_PATTERNS}}\n```\n\n**You may ONLY modify files matching these patterns.**\n\n## Task Instructions\n\n**Objective**: Harden types by replacing string literals with enums and narrowing `any` to specific types.\n\n**Priority Order:**\n1. Prisma Enums (most reliable)\n2. Shared Types (`shared\u002Ftypes\u002F`, `@shared\u002Ftypes`)\n3. Constants (`*.constants.ts`)\n4. Create new types ONLY when genuinely needed\n\n**Check existing types FIRST:**\n```bash\n# Prisma enums\ngrep -E \"^enum \" backend\u002Fprisma\u002Fschema.prisma\n\n# Shared types\nfind shared\u002Ftypes -name \"*.ts\" -exec grep \"export type\\|export interface\" {} \\;\n\n# Constants\nfind . -name \"*.constants.ts\" -exec cat {} \\;\n```\n\n**Pattern - String Literals:**\n```typescript\n\u002F\u002F ❌ BEFORE\nif (user.role === 'admin')\n\n\u002F\u002F ✅ AFTER\nimport { UserRole } from '..\u002Fgenerated\u002Fprisma\u002Findex.js';\nif (user.role === UserRole.admin)\n```\n\n**Pattern - Any Types:**\n```typescript\n\u002F\u002F ❌ BEFORE\nconst data: any = response.body;\n\n\u002F\u002F ✅ AFTER - narrow to SPECIFIC type\nconst data: UserPayload = response.body;\n\n\u002F\u002F ❌ WRONG - unknown is cheating, not fixing\nconst data: unknown = response.body;  \u002F\u002F NOT ALLOWED\n```\n\n**Work in small batches (1-3 changes), verify after each.**\n\n## Acceptance Criteria\n```bash\n# REQUIRED after EACH batch of changes\nnpx tsc --noEmit\n\n# Before final completion\n{{PKG_MANAGER}} run lint\n```\n\n**If verification fails:** STOP, report the error, do NOT proceed.\n\n## Required Output Format\n```markdown\n## Type Hardening Report\n\n### Delegation ID\n{{DELEGATION_ID}}\n\n### Changes Applied\n| File | Line | Before | After |\n|------|------|--------|-------|\n| auth.service.ts | 45 | `'admin'` | `UserRole.admin` |\n| user.service.ts | 89 | `any` | `UserProfile` |\n\n### Existing Types Used\n- `UserRole` from `@prisma\u002Fclient`\n- `UserProfile` from `shared\u002Ftypes\u002Fuser`\n\n### New Types Created (if any)\n- None (or list with justification)\n\n### Verification\n- `npx tsc --noEmit` - ✅ Passed\n- `npm run lint` - ✅ Passed\n\n### Remaining Opportunities\n[List any skipped items with reason]\n```\n\n## Guardrails\n\n⚠️ **STOP and escalate** if:\n1. No existing type matches - need Cloud to create new type\n2. Changing `any` would require business logic changes\n3. Type is in security-critical code (auth, crypto)\n4. Uncertain about correct enum value casing\n\n⚠️ **NEVER:**\n- Replace `any` with `unknown` (that's cheating, not fixing)\n- Create types without checking existing first\n- Change any business logic\n- Proceed after verification failure\n```\n\n## Best Practices\n\n1. **Scope narrowly** - Better to under-scope than over-scope\n2. **Provide concrete examples** - Always include before\u002Fafter from actual code\n3. **Be explicit about boundaries** - What's allowed, what's forbidden\n4. **Make acceptance criteria runnable** - Exact commands, not descriptions\n5. **Require structured output** - Parseable completion reports\n6. **Include escalation path** - Gemini should know when to stop\n\n## Related Skills\n\n- `gemini-api\u002Fcaching` - For caching Gemini API calls\n- `gemini-api\u002Frate-limiting` - For managing API rate limits\n\n## Related Agents\n\n- `gemini-delegation` - Uses this skill to generate packs\n","# Handoff Pack Generator\n\n## Purpose\n\nGenerate well-structured prompts (\"Handoff Packs\") for delegating scoped work to Gemini, ensuring clear instructions, verifiable acceptance criteria, and parseable output format.\n\n## When to Use\n\n- Called by `gemini-delegation` agent after user approves delegation\n- User wants to manually generate a handoff prompt\n- Need to create a fix-up prompt after failed verification\n\n## Handoff Pack Structure\n\nA complete Handoff Pack has these sections:\n\n### 1. Session Context\n\n```markdown\n# Gemini Handoff Pack\n\n## Session Context\n- **Delegated By**: Claude Cloud Agent\n- **Delegation ID**: [YYYYMMDD-HHMMSS-hash]\n- **Project**: [repo name]\n- **Branch**: [current branch]\n```\n\n### 2. Scope Definition\n\n```markdown\n## Allowed Scope\n\n**You may ONLY modify these paths:**\n```\nsrc\u002Ffeatures\u002Fuser\u002F*.ts\nsrc\u002Ffeatures\u002Fuser\u002F**\u002F*.test.ts\n```\n\n**You may NOT:**\n- Modify files outside the allowed scope\n- Change function signatures or public APIs\n- Delete existing functionality\n- Add new dependencies\n- Modify configuration files\n```\n\n### 3. Task Instructions\n\n```markdown\n## Task Instructions\n\n**Objective**: [Clear, specific, measurable objective]\n\n**Context**: [Why this work is needed, background info]\n\n**Pattern to Follow**:\n\n```typescript\n\u002F\u002F === BEFORE ===\nexport function calculateTotal(items: Item[]): number {\n  return items.reduce((sum, item) => sum + item.price, 0);\n}\n\n\u002F\u002F === AFTER ===\n\u002F**\n * Calculates the total price of all items.\n * @param items - Array of items with price property\n * @returns Total price as a number\n *\u002F\nexport function calculateTotal(items: Item[]): number {\n  return items.reduce((sum, item) => sum + item.price, 0);\n}\n```\n\n**Apply this pattern to:**\n- All exported functions in scope\n- Skip private\u002Finternal functions (no export keyword)\n- Preserve existing JSDoc if present (don't duplicate)\n```\n\n### 4. Acceptance Criteria\n\n```markdown\n## Acceptance Criteria\n\nBefore reporting completion, ALL of these must pass:\n\n```bash\n# TypeScript compilation (required)\nnpx tsc --noEmit\n\n# Linting (required)\nnpm run lint\n# OR: pnpm lint\n# OR: yarn lint\n\n# Tests (if applicable)\nnpm test -- --passWithNoTests\n# OR: pnpm test\n# OR: yarn test\n```\n\n**Success means:**\n- Zero TypeScript errors\n- Zero lint errors (warnings acceptable)\n- All tests pass (or none affected)\n\n**If any fail:**\n1. Fix the issue\n2. Re-run the check\n3. Only report when ALL pass\n```\n\n### 5. Output Format\n\n```markdown\n## Required Output Format\n\nWhen complete, provide this EXACT format:\n\n```markdown\n## Gemini Completion Report\n\n### Delegation ID\n[same ID from Session Context]\n\n### Files Modified\n- `path\u002Fto\u002Ffile1.ts` - Added JSDoc to 3 functions\n- `path\u002Fto\u002Ffile2.ts` - Added JSDoc to 5 functions\n- `path\u002Fto\u002Ffile3.ts` - Added JSDoc to 2 functions\n\n### Commands Run\n- `npx tsc --noEmit` - ✅ Passed\n- `npm run lint` - ✅ Passed\n- `npm test` - ✅ Passed (or N\u002FA)\n\n### Diff Summary\n```\n src\u002Ffeatures\u002Fuser\u002Fservice.ts  | 45 +++++++++++++++++++++\n src\u002Ffeatures\u002Fuser\u002Ftypes.ts    | 12 ++++++\n src\u002Ffeatures\u002Fuser\u002Futils.ts    | 18 +++++++++\n 3 files changed, 75 insertions(+)\n```\n\n### Notes\n[Any decisions made, edge cases encountered, or observations]\n\n### Escalations (if any)\n[Items that need Cloud review - unclear patterns, security concerns, etc.]\n```\n```\n\n### 6. Guardrails\n\n```markdown\n## Guardrails\n\n⚠️ **STOP and report as Escalation** if you encounter:\n\n1. **Unclear patterns** - Need architectural decision\n2. **Business logic changes** - Beyond scope of delegation\n3. **Security-sensitive code** - Auth, crypto, validation, secrets\n4. **Breaking changes** - Would change public API behavior\n5. **Cross-cutting concerns** - Changes ripple outside scope\n6. **Dependency changes** - Package.json modifications needed\n\n**How to escalate:**\n\n```markdown\n### Escalations\n1. **File**: `src\u002Ffeatures\u002Fuser\u002Fauth.ts`\n   **Issue**: Contains password hashing logic - security sensitive\n   **Recommendation**: Skip this file, let Cloud handle\n\n2. **Pattern unclear**: `src\u002Ffeatures\u002Fuser\u002Flegacy.ts`\n   **Issue**: Mixed export styles, unclear which to document\n   **Recommendation**: Clarify pattern before proceeding\n```\n\nDo NOT guess on escalation items. Report and skip.\n```\n\n## Instructions\n\n### Generating a New Handoff Pack\n\n**Input required:**\n- Task description\n- Scope (file patterns)\n- Triage score (for context)\n- Acceptance commands (auto-detected or specified)\n\n**Process:**\n\n1. **Detect project type:**\n```bash\n# Check for package.json\nif [ -f \"package.json\" ]; then\n  PKG_MANAGER=\"npm\"\n  [ -f \"pnpm-lock.yaml\" ] && PKG_MANAGER=\"pnpm\"\n  [ -f \"yarn.lock\" ] && PKG_MANAGER=\"yarn\"\nfi\n```\n\n2. **Generate delegation ID:**\n```bash\nDELEGATION_ID=\"$(date +%Y%m%d-%H%M%S)-$(echo \"$TASK\" | md5sum | cut -c1-8)\"\n```\n\n3. **Build scope section** from provided path patterns\n\n4. **Create before\u002Fafter examples** from existing code in scope\n\n5. **Add appropriate acceptance criteria** based on project type\n\n6. **Include guardrails section** (always)\n\n### Generating a Fix-Up Pack\n\nWhen verification fails, generate a minimal fix-up pack:\n\n```markdown\n# Gemini Fix-Up Pack\n\n## Previous Delegation\n- **Original ID**: [original delegation ID]\n- **Fix-Up ID**: [new ID]\n\n## Issues to Fix\n\n### Issue 1: [Category]\n**File**: `path\u002Fto\u002Ffile.ts`\n**Error**: [exact error message]\n**Fix**: [specific instruction]\n\n### Issue 2: [Category]\n**File**: `path\u002Fto\u002Ffile2.ts`\n**Error**: [exact error message]\n**Fix**: [specific instruction]\n\n## After Fixes\n\nRe-run verification:\n```bash\nnpx tsc --noEmit\nnpm run lint\n```\n\n## Report Format\n\n```markdown\n## Fix-Up Report\n\n### Original Delegation ID\n[id]\n\n### Issues Fixed\n- Issue 1: ✅ Fixed - [what was done]\n- Issue 2: ✅ Fixed - [what was done]\n\n### Verification\n- `npx tsc --noEmit` - ✅ Passed\n- `npm run lint` - ✅ Passed\n\n### Notes\n[Any additional context]\n```\n```\n\n## Templates\n\n### Template: Documentation Addition\n\n```markdown\n# Gemini Handoff Pack\n\n## Session Context\n- **Delegated By**: Claude Cloud Agent\n- **Delegation ID**: {{DELEGATION_ID}}\n- **Project**: {{PROJECT_NAME}}\n\n## Allowed Scope\n```\n{{SCOPE_PATTERNS}}\n```\n\n**You may NOT:**\n- Modify files outside scope\n- Change any code logic\n- Modify function signatures\n\n## Task Instructions\n\n**Objective**: Add JSDoc documentation to all exported functions\n\n**Pattern**:\n```typescript\n\u002F\u002F BEFORE\nexport function myFunction(param: Type): ReturnType {\n\n\u002F\u002F AFTER\n\u002F**\n * Brief description of what the function does.\n * @param param - Description of parameter\n * @returns Description of return value\n *\u002F\nexport function myFunction(param: Type): ReturnType {\n```\n\n**Rules:**\n- Only document exported functions (has `export` keyword)\n- Keep descriptions concise (1 line for simple functions)\n- Use existing code to infer parameter\u002Freturn descriptions\n- Preserve any existing documentation\n\n## Acceptance Criteria\n```bash\nnpx tsc --noEmit\n{{PKG_MANAGER}} run lint\n```\n\n## Required Output Format\n[Standard completion report format]\n\n## Guardrails\n[Standard guardrails]\n```\n\n### Template: Rename\u002FReplace\n\n```markdown\n# Gemini Handoff Pack\n\n## Session Context\n[standard]\n\n## Allowed Scope\n```\n{{SCOPE_PATTERNS}}\n```\n\n## Task Instructions\n\n**Objective**: Rename `{{OLD_NAME}}` to `{{NEW_NAME}}` across all files in scope\n\n**What to rename:**\n- Variable declarations\n- Function parameters\n- Object properties\n- Type\u002Finterface properties\n- Import\u002Fexport statements\n- String literals in specific contexts (specify)\n\n**What NOT to rename:**\n- Comments (unless referencing the identifier)\n- String literals (unless confirmed as identifiers)\n- External API calls\n\n## Acceptance Criteria\n```bash\nnpx tsc --noEmit  # Must pass - catches missed renames\n{{PKG_MANAGER}} run lint\n{{PKG_MANAGER}} test\n```\n\n## Required Output Format\n[Standard]\n\n## Guardrails\n[Standard]\n```\n\n### Template: Type Hardening\n\n```markdown\n# Gemini Handoff Pack\n\n## Session Context\n- **Delegated By**: Claude Cloud Agent\n- **Delegation ID**: {{DELEGATION_ID}}\n- **Project**: {{PROJECT_NAME}}\n- **Reference Skill**: `.claude\u002Fskills\u002Fquality\u002Ftype-hardening\u002FSKILL.md`\n\n## Allowed Scope\n```\n{{SCOPE_PATTERNS}}\n```\n\n**You may ONLY modify files matching these patterns.**\n\n## Task Instructions\n\n**Objective**: Harden types by replacing string literals with enums and narrowing `any` to specific types.\n\n**Priority Order:**\n1. Prisma Enums (most reliable)\n2. Shared Types (`shared\u002Ftypes\u002F`, `@shared\u002Ftypes`)\n3. Constants (`*.constants.ts`)\n4. Create new types ONLY when genuinely needed\n\n**Check existing types FIRST:**\n```bash\n# Prisma enums\ngrep -E \"^enum \" backend\u002Fprisma\u002Fschema.prisma\n\n# Shared types\nfind shared\u002Ftypes -name \"*.ts\" -exec grep \"export type\\|export interface\" {} \\;\n\n# Constants\nfind . -name \"*.constants.ts\" -exec cat {} \\;\n```\n\n**Pattern - String Literals:**\n```typescript\n\u002F\u002F ❌ BEFORE\nif (user.role === 'admin')\n\n\u002F\u002F ✅ AFTER\nimport { UserRole } from '..\u002Fgenerated\u002Fprisma\u002Findex.js';\nif (user.role === UserRole.admin)\n```\n\n**Pattern - Any Types:**\n```typescript\n\u002F\u002F ❌ BEFORE\nconst data: any = response.body;\n\n\u002F\u002F ✅ AFTER - narrow to SPECIFIC type\nconst data: UserPayload = response.body;\n\n\u002F\u002F ❌ WRONG - unknown is cheating, not fixing\nconst data: unknown = response.body;  \u002F\u002F NOT ALLOWED\n```\n\n**Work in small batches (1-3 changes), verify after each.**\n\n## Acceptance Criteria\n```bash\n# REQUIRED after EACH batch of changes\nnpx tsc --noEmit\n\n# Before final completion\n{{PKG_MANAGER}} run lint\n```\n\n**If verification fails:** STOP, report the error, do NOT proceed.\n\n## Required Output Format\n```markdown\n## Type Hardening Report\n\n### Delegation ID\n{{DELEGATION_ID}}\n\n### Changes Applied\n| File | Line | Before | After |\n|------|------|--------|-------|\n| auth.service.ts | 45 | `'admin'` | `UserRole.admin` |\n| user.service.ts | 89 | `any` | `UserProfile` |\n\n### Existing Types Used\n- `UserRole` from `@prisma\u002Fclient`\n- `UserProfile` from `shared\u002Ftypes\u002Fuser`\n\n### New Types Created (if any)\n- None (or list with justification)\n\n### Verification\n- `npx tsc --noEmit` - ✅ Passed\n- `npm run lint` - ✅ Passed\n\n### Remaining Opportunities\n[List any skipped items with reason]\n```\n\n## Guardrails\n\n⚠️ **STOP and escalate** if:\n1. No existing type matches - need Cloud to create new type\n2. Changing `any` would require business logic changes\n3. Type is in security-critical code (auth, crypto)\n4. Uncertain about correct enum value casing\n\n⚠️ **NEVER:**\n- Replace `any` with `unknown` (that's cheating, not fixing)\n- Create types without checking existing first\n- Change any business logic\n- Proceed after verification failure\n```\n\n## Best Practices\n\n1. **Scope narrowly** - Better to under-scope than over-scope\n2. **Provide concrete examples** - Always include before\u002Fafter from actual code\n3. **Be explicit about boundaries** - What's allowed, what's forbidden\n4. **Make acceptance criteria runnable** - Exact commands, not descriptions\n5. **Require structured output** - Parseable completion reports\n6. **Include escalation path** - Gemini should know when to stop\n\n## Related Skills\n\n- `gemini-api\u002Fcaching` - For caching Gemini API calls\n- `gemini-api\u002Frate-limiting` - For managing API rate limits\n\n## Related Agents\n\n- `gemini-delegation` - Uses this skill to generate packs\n",{"name":5,"description":7},"main","f2ec4b3b9133d34eeaf9b38e4b0a97e8e5705a7f","benchmarks\u002Ffinal\u002Fskills\u002Fasset1__BerryKuipers--handoff-pack",0,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard","https:\u002F\u002Fgithub.com\u002FJSGforever","2026-08-29 18:27:56",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add JSGforever\u002Fskillguard --skill handoff-pack",{"tool":53,"command":54},"bunx","bunx skills add JSGforever\u002Fskillguard --skill handoff-pack",{"tool":56,"command":57},"pnpm","pnpm dlx skills add JSGforever\u002Fskillguard --skill handoff-pack","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__BerryKuipers--handoff-pack\u002FSKILL.md",true,[],[62,94,110,137,159,180],{"skillNo":63,"name":64,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":73,"publishedAt":35},"01M71HY2SNXBA9Q00WZDTZQ31Z","skillguard-codex-scanner","Hybrid deterministic+LLM agent-skill security scanner. Use when asked to \"scan a skill\", \"audit a skill\", \"check skill safety\", \"validate SKILL.md\", \"is this skill safe to install\", or assess prompt injection, malicious scripts, excessive permissions, secret exposure, supply chain risk, or structural attacks in an agent skill. Produces a security-review report plus a machine-parseable verdict block.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fsrc\u002Fskillguard\u002Fstatic_scanner\u002Fskillguard-codex-scanner\u002FSKILL.md",[68],{"categoryNo":69,"categoryName":70,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93],"scanner","skillguard codex scanner","skillguard","codex","chain","skill security","security-review","review report","structural","secret","prompt injection","security scanner","when","review","malicious","permissions","exposure","audit","scripts","safe",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":98,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":106,"publishedAt":35},"01M71HY0SPKTT3S27BC2HPAC5M","data-exfiltrator","Analyzes data files","MIT","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Fsmoke-one-skill\u002Fasset1__cisco-ai-defense--data-exfiltrator\u002FSKILL.md",[101],{"categoryNo":102,"categoryName":103,"taxonomyType":104,"taxonomyTypeDesc":105},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[107,108,109],"data","data exfiltrator","files",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":35},"01M71HXVS9EMN44BGDW215FZ72","real-time-collaboration-engine","Build real-time collaborative editing with WebSockets, OT\u002FCRDT conflict resolution, and presence awareness. Implements cursor tracking, optimistic updates, and offline sync. Use for collaborative editors, whiteboards, video editing. Activate on \"real-time collaboration\", \"WebSocket sync\", \"multiplayer editing\", \"CRDT\", \"presence awareness\". NOT for simple chat, request-response APIs, or single-user apps.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--real-time-collaboration-engine\u002FSKILL.md",[],[117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136],"time","real time collaboration engine","real time collaboration","collaboration","engine","real time","Video","reliability","video editing","performance","conflict resolution","presence","access","apps","updates","Bash","activate","optimizer","react","streaming",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":146,"publishedAt":35},"01M71HXP6CTY4KFN0QVMMN0V7J","react-performance-optimizer","Optimize React apps for 60fps performance. Implements memoization, virtualization, code splitting, bundle optimization. Use for slow renders, large lists, bundle bloat. Activate on \"React performance\", \"slow render\", \"useMemo\", \"bundle size\", \"virtualization\". NOT for backend optimization, non-React frameworks, or premature optimization.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--react-performance-optimizer\u002FSKILL.md",[143],{"categoryNo":144,"categoryName":145,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000009","前端开发",[126,147,134,135,148,149,150,151,152,153,117,154,155,130,132,156,133,136,157,158],"react performance optimizer","react performance","performance optimizer","app","nextjs","expert","re","render","2025","code","router","strategies",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":166,"publishedAt":35},"01M71HXH7QXSQB4QTDZ7SP7YXQ","llm-streaming-response-handler","Build production LLM streaming UIs with Server-Sent Events, real-time token display, cancellation, error recovery. Handles OpenAI\u002FAnthropic\u002FClaude streaming APIs. Use for chatbots, AI assistants, real-time text generation. Activate on \"LLM streaming\", \"SSE\", \"token stream\", \"chat UI\", \"real-time AI\". NOT for batch processing, non-streaming APIs, or WebSocket bidirectional chat.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--llm-streaming-response-handler\u002FSKILL.md",[165],{"categoryNo":144,"categoryName":145,"taxonomyType":71,"taxonomyTypeDesc":72},[167,136,168,169,170,171,126,117,172,173,174,132,133,134,175,135,176,177,178,179],"llm streaming response handler","handler","error","processing","retry","chat ui","error recovery","critical","batch","display","text","server","read",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":184,"categories":185,"keywords":193,"publishedAt":35},"01M71HXCB0E1YRKYW1Y8T0Y106","github-actions-pipeline-builder","Build production CI\u002FCD pipelines with GitHub Actions. Implements matrix builds, caching, deployments, testing, security scanning. Use for automated testing, deployments, release workflows. Activate on \"GitHub Actions\", \"CI\u002FCD\", \"workflow\", \"deployment pipeline\", \"automated testing\". NOT for Jenkins\u002FCircleCI, manual deployments, or non-GitHub repositories.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--github-actions-pipeline-builder\u002FSKILL.md",[186,189,192],{"categoryNo":187,"categoryName":188,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":190,"categoryName":191,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":69,"categoryName":70,"taxonomyType":71,"taxonomyTypeDesc":72},[194,195,196,197,198,199,200,124,152,201,202,203,133,158,204,179,205,206,207,208],"github actions pipeline builder","actions","github actions","pipeline builder","github","builder","pipeline","testing","ci","workflows","run","release","write","edit","git"]