AgentSkillsCN

contribute-to-template

借助 Git Worktrees,将您在个人桌面中积累的通用改进成果安全、隔离地推回公共模板远程仓库。当您拥有能惠及所有用户的改进(如技能提升、CLAUDE.md 的优化调整、文档更新等)时,此功能将大显身手。

SKILL.md
--- frontmatter
name: contribute-to-template
description: Push generic improvements from your private desk back to the public template remote using git worktrees for safe, isolated editing. Use when you have improvements (skills, CLAUDE.md refinements, documentation) that would benefit all users.
user-invocable: true

Contribute to Template

Push generic improvements from your private desk back to the public template remote using git worktrees for safe, isolated editing.


CRITICAL SECURITY WARNING

The template is a PUBLIC REPOSITORY. Pushing private data is a serious security and privacy breach.

BEFORE EVERY PUSH, VERIFY:

  1. No personal names - Replace your name with [USER_NAME]
  2. No file paths - Replace /home/yourname/ with [YOUR_PATH]
  3. No credentials - API keys, tokens, passwords
  4. No personal data - Goals, preferences, diary entries, schedules
  5. No contact info - Phone numbers, emails, addresses

If in doubt, DON'T PUSH. Ask the user first.


When to Use

Invoke /contribute-to-template when you have:

  • New skills that are generally useful (not personal workflows)
  • CLAUDE.md improvements (clarifications, bug fixes, better examples)
  • Documentation updates
  • Structural improvements to the Desk
  • New rules in .claude/rules/

What NEVER to Contribute

These directories are ALWAYS private - NEVER push them:

  • Preferences/ - Personal preferences, communication style
  • Goals/ - Personal goals and aspirations
  • Diary/ - Logs, notes, personal history
  • Responsibilities/ - Personal tasks and projects

These patterns are ALWAYS private - search and replace before pushing:

  • User's real name → [USER_NAME]
  • Specific paths → [YOUR_DESK_PATH], [REEVE_BOT_PATH]
  • Dates referencing personal events
  • Any API keys, tokens, or credentials
  • Phone numbers, email addresses, physical addresses
  • Names of friends, family, colleagues
  • Specific companies, projects, or employers

Workflow Using Git Worktrees

Git worktrees allow you to work on the template in a separate directory without affecting your main desk. This is especially important when:

  • Pulses are running and modifying your current desk
  • You want to test template changes in isolation
  • You need to carefully review what you're contributing

1. Set Up the Worktree (First Time)

bash
# Ensure template remote is configured
git remote -v | grep template
# If not present: git remote add template git@github.com:YOUR_USERNAME/reeve-desk.git

# Fetch latest template
git fetch template

# Create a worktree for template contributions
git worktree add ~/workspace/reeve-desk-template-contrib template/master

This creates a separate checkout at ~/workspace/reeve-desk-template-contrib that tracks the template remote.

2. Review What's Different

bash
# See commits in your desk that aren't in template
git fetch template
git log template/master..HEAD --oneline

For each commit, ask:

  • Is this generic (useful to any Reeve user)?
  • Does it contain personal information?
  • Is it a standalone improvement?

Good candidates:

  • Add context-engineering skill
  • Fix typo in CLAUDE.md pulse documentation
  • Improve emergency-response skill workflow
  • Add self-awareness documentation

Bad candidates:

  • Customize for wellness coaching
  • Add preference: morning workouts
  • Update Goals for Q1

3. Make Changes in the Worktree

Navigate to the worktree and make your changes there:

bash
cd ~/workspace/reeve-desk-template-contrib

# Option A: Copy files from your desk (then genericize)
cp ~/reeve_desk/.claude/skills/new-skill/SKILL.md .claude/skills/new-skill/

# Option B: Cherry-pick specific commits
git cherry-pick <commit-hash>

# Option C: Manually create/edit files
# Edit directly in this directory

4. Genericize the Changes

Before committing, ensure changes are generic:

  1. Replace user-specific values with placeholders:

    • [USER_NAME] instead of actual name
    • [YOUR_DESK_PATH] instead of actual path
    • [THEIR_DEFINITION_OF_SUCCESS] instead of specific goals
  2. Add onboarding comments where customization is needed:

    markdown
    <!--
    ONBOARDING: Customize this section for your specific setup.
    Example: "Help [NAME] achieve career success while maintaining health"
    -->
    
  3. Remove personal context:

    • Specific dates, names, places
    • References to personal habits or routines
    • Timezone-specific information

5. Commit and Push from Worktree

bash
cd ~/workspace/reeve-desk-template-contrib

# Check what you're about to commit
git status
git diff

# Stage and commit
git add .
git commit -m "Add [feature]: description of what it does"

# Push to template (worktree tracks template/master, so push to origin)
git push origin HEAD:master

6. Verify and Clean Up

bash
# Verify template has the changes
git log --oneline -5

# Return to your main desk
cd ~/reeve_desk

# Optionally remove the worktree when done
# git worktree remove ~/workspace/reeve-desk-template-contrib

Safety Checks (MANDATORY BEFORE EVERY PUSH)

Run this verification before pushing to template:

bash
cd ~/workspace/reeve-desk-template-contrib

# 1. Check for personal names (replace YOUR_NAME with actual name)
grep -ri "YOUR_NAME" . --include="*.md" | grep -v ".git"

# 2. Check for personal paths
grep -ri "/home/" . --include="*.md" | grep -v ".git" | grep -v "\[YOUR"

# 3. Check for potential API keys/secrets
grep -riE "(api_key|token|password|secret)" . --include="*.md" | grep -v ".git"

# 4. Review all staged changes line by line
git diff --staged

# 5. Verify no private directories are included
git status | grep -E "(Preferences|Goals|Diary|Responsibilities)/"

If ANY of these commands return results, STOP and fix before pushing.

Checklist:

  • No personal names (replaced with [USER_NAME])
  • No personal paths (replaced with [YOUR_DESK_PATH])
  • No API keys, tokens, or credentials
  • No Diary/, Goals/, Preferences/, Responsibilities/ files
  • All changes reviewed with git diff --staged
  • Commit message doesn't contain personal info

Quick Reference

bash
# List worktrees
git worktree list

# Create worktree from template
git worktree add ~/workspace/reeve-desk-template-contrib template/master

# Remove worktree
git worktree remove ~/workspace/reeve-desk-template-contrib

# Prune stale worktree references
git worktree prune

# Reset worktree to latest template (for fresh start)
cd ~/workspace/reeve-desk-template-contrib
git fetch origin
git reset --hard origin/master

Why Worktrees?

Without WorktreesWith Worktrees
Must stash/commit current workWork in isolation
Risk mixing personal and template changesClean separation
Pulses may modify files mid-contributionPulses only affect main desk
Harder to review what you're contributingEasy diff against template
Risk of accidentally pushing personal dataSafe sandbox environment

Example Session

code
User: /contribute-to-template

Reeve: Let me set up a worktree for safe contribution.

[Runs: git worktree list]
[If no template worktree exists: git worktree add ~/workspace/reeve-desk-template-contrib template/master]

Checking what's available to contribute...
[Runs: git fetch template && git log template/master..HEAD --oneline]

Found 12 commits ahead of template. Analyzing...

**Template-worthy:**
1. `abc123` - Add context-engineering skill
2. `def456` - Fix pulse documentation typo
3. `ghi789` - Add self-awareness documentation

**Personal (skip):**
- `jkl012` - Customize for wellness coaching
- `mno345` - Add morning workout preference

I'll copy the relevant files to the worktree and genericize them.

[Makes changes in ~/workspace/reeve-desk-template-contrib]

Ready to commit:
- `.claude/skills/context-engineering/SKILL.md`
- `.claude/rules/self-awareness.md`
- `CLAUDE.md` (with [USER_NAME] placeholders)

Push these to template?

Remotes Reference

RemoteRepoPurpose
originPrivate (your-desk-repo)Your personal desk
templatePublic (reeve-desk)Shared template

In your main desk: origin = private, template = public In the worktree: origin = public template (because it was created from template/master)

Always push personal changes to your main desk's origin, generic improvements through the worktree.

Maintaining the Worktree

If you contribute frequently:

  • Keep the worktree around (~/workspace/reeve-desk-template-contrib)
  • Periodically fetch and reset: cd ~/workspace/reeve-desk-template-contrib && git fetch origin && git reset --hard origin/master
  • This ensures you're always starting from the latest template state

Version: 2.0 (Worktree Edition) Last Updated: 2026-02-04