pull
Skill38 starsChanged 2 months agoMITView on GitHub
pull
- Installs packages
15 other projects use a version of this.
Adopted by
Most recently taken up by
- mayoz/rabbittheir own version, first seen Nov 15, 2026
- toy-crane/claude-code-playbook-templatetheir own version, first seen Nov 8, 2026
- egregore-labs/egregoretheir own version, first seen Nov 6, 2026
- grainulation/grainulatortheir own version, first seen Nov 3, 2026
- iagocavalcante/claude-turbo-searchtheir own version, first seen Oct 27, 2026
- MarvinJWendt/skillstheir own version, first seen Oct 15, 2026
Used with
Projects with it also use ingest.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
JaimeGBASkillingest
Digest an external source (article, paper, transcript, URL, book chapter) and integrate its content into the knowledge base
Also in 3 projects that use this
Other versions15 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 15
- openai/symphony★ 27ksame name
- egregore-labs/egregore★ 293same name
- team-mirai-volunteer/mirai-gikai★ 214same name
- grainulation/grainulator★ 86same name
- HamedMP/matrix-os★ 86same name
- toy-crane/claude-code-playbook-template★ 77same name
- Itsokay-co/bio-vibing★ 17same name
- iagocavalcante/claude-turbo-search★ 16same name
- matcom/ai-skills★ 14same name
- pche-broken-artist/forge-of-thought★ 12same name
5 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository101 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .claude/CLAUDE.mdCLAUDE.md
- .cursor/rules/autonomous_execution.mdcCursor rule
- .cursor/rules/cursor_rules_editing.mdcCursor rule
- .cursor/rules/cursor_rules_sync.mdcCursor rule
- .cursor/rules/cursor_rules_sync_requirement.mdcCursor rule
- site_pages/llms.txtllms.txt
- advisorySkill
- analyzeSkill
- auditSkill
- commitSkill
- create-planSkill
- create_planSkill
- create-prototypeSkill
- create_prototypeSkill
- create_prSkill
- create-releaseSkill
- create_releaseSkill
- create-ruleSkill
- create_ruleSkill
- debugSkill
- draft-illustrationSkill
- draft_illustrationSkill
- endSkill
- evaluate_positioningSkill
- final-reviewSkill
- final_reviewSkill
- fix-feature-bugSkill
- fix_feature_bugSkill
- learnSkill
- manage-error-debuggingSkill
- manage_error_debuggingSkill
- neversight_learn_skills.dev_obviously_awesomeSkill
- process_issuesSkill
- process_prsSkill
- publish-planSkill
- publish_planSkill
- publishSkill
- pushSkill
- recover_sqlite_databaseSkill
- releaseSkill
- report-errorSkill
- report_errorSkill
- reportSkill
- reviewSkill
- run-feature-workflowSkill
- run_feature_workflowSkill
- setup-commandsSkill
- setup_commandsSkill
- setup-cursor-copiesSkill
- setup_cursor_copiesSkill
- store-neotomaSkill
- store_neotomaSkill
- sync-env-from-1passwordSkill
- sync_env_from_1passwordSkill
- analyzeSkill
- auditSkill
- commitSkill
- create-planSkill
- create-prototypeSkill
- The first 60 shown.
The file
Show its rules and text
We split this skill into the rules it gives an agent
26 rules. 0 are common, 20 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 12 edited versions we read keep these.
20
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 20
SUBMODULE MODE: If a submodule name is provided (e.g., /pull foundation), scope operations to that submodule only, not the main repository.
- Distinctive: line 24
If submodule name provided:
- Very specific: line 25
Check if submodule exists: git submodule status <submodule-name>
- Distinctive: line 27
Run pull workflow in submodule context
- Distinctive: line 30
If no submodule name provided, proceed with main repository pull workflow below.
- Distinctive: line 34
Commit local changes using foundation commit command (if any uncommitted changes)
- Distinctive: line 38
Run setup scripts as needed
- Distinctive: line 59
Update scope context (all subsequent operations in submodule)
- Distinctive: line 61
If no submodule name provided, proceed with main repository context.
- Distinctive: line 88
If uncommitted changes exist, invoke the foundation commit command workflow
- Very specific: line 89
If in submodule mode: use /commit <submodule-name>
- Very specific: line 90
If in main repo mode: use /commit
- Distinctive: line 91
Do NOT proceed to pull until commit completes successfully
- Very specific: line 144
If SKIP_PULL is false:
- Distinctive: line 183
If merge conflicts occur, DO NOT attempt automatic resolution
- Distinctive: line 185
Ask user how to proceed: resolve manually, abort merge, or use specific merge strategy
- Distinctive: line 186
If user chooses to resolve manually, pause and wait for user to complete resolution
- Distinctive: line 187
After user indicates conflicts are resolved, verify with git status
- Distinctive: line 193
After successful pull, detect and run setup scripts as needed:
- Very specific: line 195
IMPORTANT: If in submodule mode, return to parent repository directory BEFORE running setup scripts, as parent-level setup scripts (like …
- Distinctive: line 287
Note: If in submodule mode, we already returned to the parent directory in Step 6 to run setup scripts.
- Distinctive: line 289
If submodule name was provided and we're not already in the parent directory:
- Distinctive: line 314
If commit fails: Abort and report error
- Distinctive: line 315
If pull fails due to conflicts: List conflicts, pause for user resolution
- Distinctive: line 316
If setup script fails: Log warning but continue (non-fatal)
- Distinctive: line 317
If submodule not found: Exit with error
“Common” is measured: kept by at least 6 in 10 of the 12 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
<!-- Source: foundation/.cursor/skills/pull/SKILL.md -->name: pull
description: Pull from origin; supports /pull <submodule>.
triggers:
- pull
- /pull
pull
Pull latest commits from origin, committing local changes first, merging conflicts, and running setup scripts.
SUBMODULE MODE: If a submodule name is provided (e.g., /pull foundation), scope operations to that submodule only, not the main repository.
Configuration is read from foundation-config.yaml.
If submodule name provided:
- Check if submodule exists:
git submodule status <submodule-name> - Change to submodule directory:
cd <submodule-name> - Run pull workflow in submodule context
- Exit after submodule pull (do NOT pull main repository)
If no submodule name provided, proceed with main repository pull workflow below.
Workflow Overview
- Commit local changes using foundation commit command (if any uncommitted changes)
- Fetch latest from origin
- Pull latest commits (merge or rebase based on configuration)
- Resolve merge conflicts if they occur
- Run setup scripts as needed
Tasks
Step 1: Determine Scope
If submodule name provided:
- Verify submodule exists:
if ! git submodule status <submodule-name> >/dev/null 2>&1; then echo "❌ Submodule not found: <submodule-name>" exit 1 fi - Save parent directory and change to submodule directory:
ORIGINAL_DIR=$(pwd) # Save parent directory before cd cd <submodule-name> || exit 1 - Update scope context (all subsequent operations in submodule)
If no submodule name provided, proceed with main repository context.
Step 2: Check for Uncommitted Changes
# Check if there are uncommitted changes
if git status --porcelain | grep -q .; then
echo "📝 Found uncommitted changes, committing first..."
# Use foundation commit command to commit changes
# Agent should invoke the commit command workflow:
# - Run security audit
# - Stage changes
# - Generate commit message
# - Commit changes
# - Push to origin if configured
# For agent: Use the foundation commit command workflow
# Invoke: `/commit <submodule-name>` (if submodule) or `/commit` (if main repo)
echo "✅ Local changes committed"
else
echo "✅ No uncommitted changes"
fiAgent Instructions for Commit Step:
- If uncommitted changes exist, invoke the foundation commit command workflow
- If in submodule mode: use
/commit <submodule-name> - If in main repo mode: use
/commit - Do NOT proceed to pull until commit completes successfully
Step 3: Fetch Latest from Origin
echo "🔄 Fetching latest from origin..."
git fetch origin
# Check current branch
CURRENT_BRANCH=$(git branch --show-current)
if [ -z "$CURRENT_BRANCH" ]; then
echo "⚠️ Detached HEAD state - cannot pull"
echo "Current commit: $(git rev-parse HEAD)"
exit 1
fi
echo "📍 Current branch: $CURRENT_BRANCH"Step 4: Check if Pull is Needed
# Check if local branch is behind remote
LOCAL=$(git rev-parse @)
REMOTE=$(git rev-parse @{u} 2>/dev/null || echo "")
if [ -z "$REMOTE" ]; then
echo "⚠️ No upstream branch set for $CURRENT_BRANCH"
echo "Setting upstream to origin/$CURRENT_BRANCH"
git branch --set-upstream-to=origin/$CURRENT_BRANCH $CURRENT_BRANCH
REMOTE=$(git rev-parse @{u})
fi
BASE=$(git merge-base @ @{u})
if [ "$LOCAL" = "$REMOTE" ]; then
echo "✅ Already up to date with origin/$CURRENT_BRANCH"
SKIP_PULL=true
elif [ "$LOCAL" = "$BASE" ]; then
echo "⬇️ Local branch is behind origin/$CURRENT_BRANCH - will pull"
SKIP_PULL=false
elif [ "$REMOTE" = "$BASE" ]; then
echo "⬆️ Local branch is ahead of origin/$CURRENT_BRANCH"
SKIP_PULL=true
else
echo "🔀 Local and remote branches have diverged - will pull and merge"
SKIP_PULL=false
fiStep 5: Pull and Merge
If SKIP_PULL is false:
echo "⬇️ Pulling latest changes from origin/$CURRENT_BRANCH..."
# Pull with merge strategy (default)
# If conflicts occur, git pull will pause
git pull origin "$CURRENT_BRANCH" || {
PULL_EXIT_CODE=$?
if [ $PULL_EXIT_CODE -ne 0 ]; then
echo "⚠️ Pull encountered issues"
# Check if there are merge conflicts
if git status | grep -q "Unmerged paths"; then
echo "🔀 Merge conflicts detected"
echo ""
echo "Conflicted files:"
git status | grep "both modified\|both added\|deleted by them\|deleted by us" || true
echo ""
# Agent should resolve conflicts interactively
# For now, list conflicts and ask user
echo "❌ Merge conflicts must be resolved manually"
echo "Run 'git status' to see conflicted files"
echo "Resolve conflicts, then run 'git add <file>' for each resolved file"
echo "Finally, run 'git commit' to complete the merge"
exit 1
else
echo "❌ Pull failed for unknown reason"
exit 1
fi
fi
}
echo "✅ Successfully pulled latest changes"Agent Instructions for Conflict Resolution:
- If merge conflicts occur, DO NOT attempt automatic resolution
- List all conflicted files to user
- Ask user how to proceed: resolve manually, abort merge, or use specific merge strategy
- If user chooses to resolve manually, pause and wait for user to complete resolution
- After user indicates conflicts are resolved, verify with
git status - Stage resolved files with
git add - Complete merge with
git commit
Step 6: Detect and Run Setup Scripts
After successful pull, detect and run setup scripts as needed:
IMPORTANT: If in submodule mode, return to parent repository directory BEFORE running setup scripts, as parent-level setup scripts (like foundation/scripts/setup_cursor_rules.sh) must be run from the parent repository context.
echo "🔧 Checking for setup scripts..."
# If in submodule mode, return to parent directory for setup scripts
if [ -n "$ORIGINAL_DIR" ]; then
echo "📁 Returning to parent repository for setup scripts..."
cd "$ORIGINAL_DIR" || exit 1
fi
# Common setup script patterns
SETUP_SCRIPTS=()
# Check for foundation setup script (must run from parent repo)
if [ -f "foundation/scripts/setup_cursor_rules.sh" ]; then
SETUP_SCRIPTS+=("foundation/scripts/setup_cursor_rules.sh")
fi
# Check for foundation validation script
if [ -f "foundation/scripts/validate_setup.sh" ]; then
SETUP_SCRIPTS+=("foundation/scripts/validate_setup.sh")
fi
# Check for repository-specific setup scripts
if [ -f "scripts/setup_agent_environment.sh" ]; then
SETUP_SCRIPTS+=("scripts/setup_agent_environment.sh")
fi
# Check for other common setup scripts
for script in scripts/setup*.sh scripts/*setup*.sh; do
if [ -f "$script" ] && [ -x "$script" ]; then
if [[ ! " ${SETUP_SCRIPTS[@]} " =~ " ${script} " ]]; then
SETUP_SCRIPTS+=("$script")
fi
fi
done
# Check package.json for setup/install scripts
if [ -f "package.json" ]; then
echo "📦 Checking package.json for setup requirements..."
# Check if node_modules exists
if [ ! -d "node_modules" ]; then
echo "📦 node_modules not found - running npm install..."
npm install
else
# Check if package.json or package-lock.json changed
if git diff HEAD@{1} HEAD --name-only | grep -q "package.json\|package-lock.json"; then
echo "📦 Dependencies may have changed - running npm install..."
npm install
fi
fi
fi
# Check for other package managers
if [ -f "requirements.txt" ] && [ ! -d "venv" ] && [ ! -d ".venv" ]; then
echo "🐍 Python dependencies detected - consider setting up virtual environment"
fi
# Run setup scripts
for script in "${SETUP_SCRIPTS[@]}"; do
echo ""
echo "▶️ Running setup script: $script"
# Make script executable if not already
chmod +x "$script" 2>/dev/null || true
# Run script
if bash "$script"; then
echo "✅ Setup script completed: $script"
else
echo "⚠️ Setup script failed: $script (exit code: $?)"
echo "Continuing anyway..."
fi
doneStep 7: Summary
echo ""
echo "✅ Pull workflow completed"
echo ""
echo "Summary:"
echo " - Branch: $CURRENT_BRANCH"
echo " - Latest commit: $(git rev-parse HEAD)"
echo " - Setup scripts run: ${#SETUP_SCRIPTS[@]}"Step 8: Return to Original Directory (if in submodule mode)
Note: If in submodule mode, we already returned to the parent directory in Step 6 to run setup scripts. This step is now a no-op, but kept for clarity.
If submodule name was provided and we're not already in the parent directory:
if [ -n "$ORIGINAL_DIR" ] && [ "$(pwd)" != "$ORIGINAL_DIR" ]; then
cd "$ORIGINAL_DIR" || exit 1
echo "✅ Returned to main repository directory"
fiConfiguration
Optional configuration in foundation-config.yaml:
development:
pull:
auto_commit: true # Automatically commit local changes before pull
conflict_strategy: "merge" # "merge" | "rebase" | "abort"
run_setup_scripts: true # Run setup scripts after pull
setup_scripts:
- "scripts/setup_agent_environment.sh" # Custom list of scripts to runError Handling
- If commit fails: Abort and report error
- If pull fails due to conflicts: List conflicts, pause for user resolution
- If setup script fails: Log warning but continue (non-fatal)
- If submodule not found: Exit with error
Inputs
submodule_name(optional string): Submodule name to scope operations to (e.g., "foundation")
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

