Community skills
Community-maintained Agent Skills built with and for Sasha Studio — the AI knowledge management platform by Context is Everything
npx -y skills add context-is-everything/skills --skill community-skillsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Contribute and update skills in the context-is-everything/skills community repository. Use this skill when: (1) User wants to add a new skill to the community repository, (2) User wants to update an existing skill in the community repository, (3) User mentions 'community skills', 'contribute skill', 'share skill', or 'publish skill', (4) User wants to create a PR for skill contributions. Automates the complete GitHub workflow: cloning, branching, committing, pushing, and PR creation using the github-community-token from secretstore.
SKILL.md
17.1 KB, as published. Nobody here has run it
Community Skills
Contribute and update skills in the context-is-everything/skills community repository.
This skill automates the complete workflow for sharing skills with the Sasha community, handling all GitHub operations transparently using the pre-configured github-community-token from secretstore.
What This Skill Does
The community-skills skill provides two primary operations:
1. Contribute - Add New Skills
Share a new skill you've created with the community by creating a pull request to the context-is-everything/skills repository.
2. Update - Improve Existing Skills
Submit updates, fixes, or improvements to skills already in the community repository.
Value Proposition
Why Use This Skill?
For Contributors:
- ✅ Automated workflow - No manual git operations required
- ✅ Token management - Uses pre-configured GitHub credentials
- ✅ PR automation - Creates professional pull requests automatically
- ✅ Error handling - Validates and handles common issues
- ✅ Best practices - Follows established contribution patterns
For the Community:
- 🌟 Shared knowledge - Make your skills available to all Sasha users
- 🔄 Continuous improvement - Easy updates keep skills current
- 📚 Growing library - Build collective Sasha capabilities
- 🤝 Collaboration - Contributions benefit everyone
What Problems Does This Solve?
Without this skill:
- Manual git clone, branch, commit, push workflow
- Finding and copying GitHub token
- Writing PR descriptions and formatting
- Remembering repository structure
- Handling authentication errors
With this skill:
- Single command contribution workflow
- Automatic token retrieval from secretstore
- Generated PR descriptions with proper formatting
- Validated skill structure
- Clear error messages with solutions
Quick Start
Contribute a New Skill
# Simple contribution
./scripts/contribute_skill.sh contribute /path/to/your/skill
# With custom branch name
./scripts/contribute_skill.sh contribute /path/to/your/skill --branch add-awesome-feature
Update an Existing Skill
# Simple update
./scripts/contribute_skill.sh update /path/to/existing/skill
# With custom commit message
./scripts/contribute_skill.sh update /path/to/skill --message "Fix typo in documentation"
How It Works
Prerequisites
Automatically Configured:
- ✅ GitHub token (
github-community-tokenin secretstore) - ✅ Repository access (pre-configured service account)
- ✅ Git credentials (handled by script)
Required:
- Valid skill directory with SKILL.md
- Skill follows proper structure
Workflow Steps
Both operations follow this automated workflow:
- Validate Token - Verify token has push permissions (prevents wasted work)
- Retrieve Token - Securely fetch
github-community-tokenfrom secretstore - Clone Repository - Clone context-is-everything/skills to /tmp
- Create Branch - Generate feature branch with timestamp (cleanup existing if needed)
- Copy Skill Files - Copy your skill to the repository
- Commit Changes - Stage and commit with descriptive message
- Push Branch - Push to GitHub using authenticated remote
- Create PR - Submit pull request with generated description
- Report Success - Provide PR URL for review
Note: Step 0 (token validation) is recommended but not currently automated. See "Before Contributing" best practices for manual validation.
Token Management
The skill uses github-community-token from secretstore:
# Token is automatically retrieved
TOKEN=$(mcp__secretstore__secretstore_get github-community-token | jq -r '.secret.value')
# Used for git operations
git clone https://${TOKEN}@github.com/context-is-everything/skills.git
git push -u origin branch-name
# Used for GitHub API
curl -H "Authorization: token ${TOKEN}" https://api.github.com/repos/...
Security:
- Token never exposed in logs
- Stored encrypted in secretstore
- Only used for authenticated operations
- Automatically rotated every 90 days
Usage Patterns
Pattern 1: Contributing a Brand New Skill
Scenario: You created a new skill and want to share it.
# Skill location
SKILL_PATH="/home/sasha/all-project-files/deployed-md-files/docs/skills/data-analysis"
# Contribute to community
./scripts/contribute_skill.sh contribute $SKILL_PATH
What happens:
- Validates skill structure (SKILL.md exists, proper format)
- Creates branch:
contribute-data-analysis-20260131-120000 - Copies all skill files to repository
- Commits: "Add data-analysis skill"
- Pushes and creates PR with:
- Title: "Add data-analysis skill"
- Description with file count, line count, testing checklist
- Link to view changes
Output:
✓ Skill directory validated
✓ GitHub token retrieved
✓ Repository ready
✓ Branch created: contribute-data-analysis-20260131-120000
✓ Skill files copied
✓ Changes committed
✓ Branch pushed
✓ Pull request created
✨ Success! Pull request created
View PR: https://github.com/context-is-everything/skills/pull/123
Pattern 2: Updating an Existing Skill
Scenario: You improved documentation in the pdf-editor skill.
# Updated skill location
SKILL_PATH="/home/sasha/all-project-files/deployed-md-files/docs/skills/pdf-editor"
# Submit update
./scripts/contribute_skill.sh update $SKILL_PATH --message "Improve documentation and add examples"
What happens:
- Validates skill exists and is modified
- Creates branch:
update-pdf-editor-20260131-120000 - Removes old version
- Copies updated files
- Commits with custom message
- Pushes and creates PR
Pattern 3: Custom Branch for Related Changes
Scenario: Making related fixes across multiple updates.
# Use consistent branch name
BRANCH="fix-typos-batch-1"
./scripts/contribute_skill.sh update /path/to/skill1 --branch $BRANCH
./scripts/contribute_skill.sh update /path/to/skill2 --branch $BRANCH
./scripts/contribute_skill.sh update /path/to/skill3 --branch $BRANCH
# All updates go to same PR
Script Reference
contribute_skill.sh
Location: scripts/contribute_skill.sh
Synopsis:
contribute_skill.sh <operation> <skill-path> [options]
Operations:
contribute- Add a new skillupdate- Update an existing skill
Arguments:
skill-path- Absolute path to skill directory
Options:
--branch NAME- Custom branch name (default: auto-generated with timestamp)--message MSG- Custom commit message (default: auto-generated)
Environment Variables:
GITHUB_TOKEN- Fallback if secretstore unavailable (not recommended)
Exit Codes:
0- Success1- Error (validation failed, token missing, git error, etc.)
Examples
# Basic contribution
./scripts/contribute_skill.sh contribute /home/sasha/all-project-files/deployed-md-files/docs/skills/my-skill
# Update with custom branch
./scripts/contribute_skill.sh update /path/to/skill --branch fix-bug-123
# Contribute with custom message
./scripts/contribute_skill.sh contribute /path/to/skill --message "Add comprehensive data visualization skill"
# Update multiple related files
BRANCH="feature-improvements"
./scripts/contribute_skill.sh update /path/to/skill1 --branch $BRANCH
./scripts/contribute_skill.sh update /path/to/skill2 --branch $BRANCH
Manual Workflow (Alternative)
If you prefer to run the workflow manually or need more control:
Step-by-Step Manual Process
- Retrieve Token
TOKEN=$(mcp__secretstore__secretstore_get github-community-token | jq -r '.secret.value')
- Clone Repository
cd /tmp
rm -rf skills
git clone "https://${TOKEN}@github.com/context-is-everything/skills.git"
cd skills
- Configure Git
git config user.email "[email protected]"
git config user.name "Sasha AI"
- Create Branch
SKILL_NAME="my-skill"
BRANCH="contribute-${SKILL_NAME}-$(date +%Y%m%d-%H%M%S)"
git checkout -b "$BRANCH"
- Copy Skill
SKILL_PATH="/home/sasha/all-project-files/deployed-md-files/docs/skills/$SKILL_NAME"
cp -r "$SKILL_PATH" "./$SKILL_NAME"
- Commit Changes
git add .
git commit -m "Add $SKILL_NAME skill"
- Push Branch
git remote set-url origin "https://${TOKEN}@github.com/context-is-everything/skills.git"
git push -u origin "$BRANCH"
- Create PR
PR_URL=$(curl -s -X POST \
-H "Authorization: token ${TOKEN}" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/context-is-everything/skills/pulls \
-d "{
\"title\": \"Add $SKILL_NAME skill\",
\"body\": \"Adding new skill to community repository\",
\"head\": \"$BRANCH\",
\"base\": \"main\"
}" | jq -r '.html_url')
echo "Pull request created: $PR_URL"
See references/github-workflow.md for complete manual workflow patterns.
Troubleshooting
Token Not Found
Error:
✗ GitHub token not found in secretstore or environment
✗ Set GITHUB_TOKEN environment variable or configure secretstore
Solutions:
-
Verify token exists in secretstore:
mcp__secretstore__secretstore_list | grep github-community-token -
If missing, token needs to be configured (contact administrator)
-
Temporary workaround (not recommended):
export GITHUB_TOKEN="ghp_your_token_here" ./scripts/contribute_skill.sh contribute /path/to/skill
Skill Validation Failed
Error:
✗ SKILL.md not found in: /path/to/skill
Solutions:
-
Verify path is correct:
ls -la /path/to/skill -
Check SKILL.md exists:
ls -la /path/to/skill/SKILL.md -
Ensure you're providing the skill directory, not a file:
# Wrong: ./contribute_skill.sh contribute /path/to/skill/SKILL.md # Right: ./contribute_skill.sh contribute /path/to/skill
No Changes to Commit
Warning:
⚠ No changes to commit
This occurs when:
- Updating a skill that hasn't changed
- Skill already exists in repository with identical content
Solutions:
-
Verify skill was actually modified:
cd /tmp/skills git status git diff -
If no real changes, no PR is needed
Permission Denied
Error:
remote: Permission to context-is-everything/skills.git denied
fatal: unable to access 'https://github.com/...': The requested URL returned error: 403
Solutions:
-
Verify token has push access:
TOKEN=$(mcp__secretstore__secretstore_get github-community-token | jq -r '.secret.value') curl -H "Authorization: token ${TOKEN}" \ https://api.github.com/repos/context-is-everything/skills | jq '.permissions' -
Expected output should show
"push": true -
If permissions incorrect, token may need rotation (contact administrator)
Token Permission Denied After Committing
Scenario: The script successfully cloned, branched, and committed, but failed when pushing to GitHub.
Error:
✓ Changes committed
remote: Permission to context-is-everything/skills.git denied to [username]
fatal: unable to access 'https://github.com/...': The requested URL returned error: 403
This happens when:
- Token validation wasn't performed before starting
- Token was rotated or revoked mid-process
- Token belongs to user without push permissions
Recovery Steps:
-
Update the token in secretstore:
# Add the new token with push permissions mcp__secretstore__secretstore_set github-community-token "ghp_NewTokenHere..." -
Manually push the existing committed work:
cd /tmp/skills git checkout [your-branch-name] # Update remote with new token TOKEN=$(mcp__secretstore__secretstore_get github-community-token | jq -r '.secret.value') git remote set-url origin "https://${TOKEN}@github.com/context-is-everything/skills.git" # Push the branch git push -u origin [your-branch-name] -
Create the PR manually:
TOKEN=$(mcp__secretstore__secretstore_get github-community-token | jq -r '.secret.value') curl -s -X POST \ -H "Authorization: token ${TOKEN}" \ -H "Accept: application/vnd.github.v3+json" \ https://api.github.com/repos/context-is-everything/skills/pulls \ -d '{ "title": "Add [skill-name] skill", "body": "Brief description of the skill", "head": "[your-branch-name]", "base": "main" }' | jq -r '.html_url'
Prevention:
- Validate token permissions BEFORE starting (see Best Practices section below)
Best Practices
Before Contributing
-
Validate Token Permissions - Verify token has push access BEFORE starting (prevents wasted work):
# Test token permissions (should return "push": true) TOKEN=$(mcp__secretstore__secretstore_get github-community-token | jq -r '.secret.value') curl -s -H "Authorization: token ${TOKEN}" \ https://api.github.com/repos/context-is-everything/skills | jq '.permissions' -
Test Your Skill - Ensure skill works as expected
-
Validate Structure - Run skill validator if available
-
Review Documentation - Check SKILL.md is clear and complete
-
Check Uniqueness - Ensure skill doesn't duplicate existing skills
Contribution Guidelines
Good contributions:
- ✅ Clear, focused purpose
- ✅ Comprehensive documentation
- ✅ Tested on real use cases
- ✅ Follows skill structure standards
- ✅ Includes examples and references
Avoid:
- ❌ Duplicate functionality of existing skills
- ❌ Missing or incomplete documentation
- ❌ Untested code or scripts
- ❌ Non-standard skill structure
- ❌ Overly specific or single-use skills
Related Documentation
- GitHub Workflow Patterns - See references/github-workflow.md
- Token Management - See
/home/sasha/all-project-files/deployed-md-files/docs/setup/github-token-distribution-design.md - Skill Creation - Use the
skill-creatorskill
Lessons Learned
These improvements were identified from real-world usage (February 2026 - stealth-search skill contribution):
Issue 1: Late Permission Discovery
Problem: Token validation happens at PUSH stage (step 6), after clone, branch, commit work is complete. If token lacks permissions, you've wasted time and left a partial state.
Solution: Validate token permissions BEFORE starting any work (see "Before Contributing" best practices above).
Issue 2: Poor Error Recovery
Problem: When push fails due to permission issues, the script doesn't provide recovery guidance. User must manually push with updated token.
Solution: Added comprehensive "Token Permission Denied After Committing" troubleshooting section with exact recovery steps.
Issue 3: Branch Exists from Failed Attempt
Problem: After fixing token and retrying, script fails because branch already exists from previous attempt. No cleanup guidance provided.
Solution: Updated workflow step 3 to mention cleanup. Future enhancement: automate branch cleanup detection and retry.
Recommended Future Enhancements
-
Automated Pre-Flight Check:
# Add to script beginning validate_token_permissions() { TOKEN=$1 curl -s -H "Authorization: token ${TOKEN}" \ https://api.github.com/repos/context-is-everything/skills | \ jq -e '.permissions.push == true' > /dev/null || { echo "✗ Token does not have push permissions" exit 1 } } -
Smart Branch Retry:
# Clean up failed attempts automatically if git show-ref --verify --quiet refs/heads/$BRANCH; then echo "⚠ Branch $BRANCH exists from previous attempt" git branch -D $BRANCH echo "✓ Cleaned up, retrying..." fi -
Token Test Command:
# Add ./scripts/test_token.sh # Quick one-command validation before contributing
Summary
The community-skills skill makes it effortless to share your work with the Sasha community:
- ✅ Automated workflow - From local skill to PR in one command
- ✅ Secure authentication - Uses pre-configured token from secretstore
- ✅ Professional PRs - Auto-generated descriptions and formatting
- ✅ Error handling - Clear messages and solutions
- ✅ Best practices - Follows established patterns
Start contributing:
./scripts/contribute_skill.sh contribute /path/to/your/amazing/skill
Keep improving:
./scripts/contribute_skill.sh update /path/to/your/improved/skill
Building the Sasha community, one skill at a time! 🚀