marketplace/bundles/plan-marshall/skills/tools-permission-sync/SKILL.md
Synchronize marketplace permissions - generate wildcards, manage executor permissions, and migrate to executor pattern.
npx skillsauth add cuioss/plan-marshall tools-permission-syncInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
PURPOSE: Synchronize Claude Code permissions with marketplace bundles and manage the executor permission pattern.
Execution mode: Run scripts exactly as documented; use --dry-run before applying changes.
Prohibited actions:
Constraints:
python3 .plan/execute-script.py plan-marshall:tools-permission-sync:marketplace-sync {command} {args}--dry-run first to preview changes before applying| Script | Notation | Purpose |
|--------|----------|---------|
| marketplace-sync | plan-marshall:tools-permission-sync:marketplace-sync | Marketplace permission synchronization |
Generate Skill and SlashCommand wildcards from marketplace inventory.
# Read inventory from stdin
python3 .plan/execute-script.py pm-plugin-development:tools-marketplace-inventory:scan-marketplace-inventory \
--scope marketplace --resource-types skills,commands | \
python3 .plan/execute-script.py plan-marshall:tools-permission-sync:marketplace-sync generate-wildcards
# Or from file
python3 .plan/execute-script.py plan-marshall:tools-permission-sync:marketplace-sync generate-wildcards \
--input inventory.json
Output (JSON):
{
"statistics": {
"bundles_scanned": 8,
"skills_found": 28,
"commands_found": 39,
"wildcards_generated": 22
},
"permissions": {
"skill_wildcards": ["Skill(pm-dev-builder:*)", "Skill(plan-marshall:*)"],
"command_bundle_wildcards": ["SlashCommand(/pm-dev-builder:*)", "SlashCommand(/plan-marshall:*)"],
"command_shortform": ["SlashCommand(/java-core:*)"]
}
}
Ensure the executor permission exists in settings.
python3 .plan/execute-script.py plan-marshall:tools-permission-sync:marketplace-sync ensure-executor \
--target global \
--dry-run
Output (JSON):
{
"executor_permission": "Bash(python3 .plan/execute-script.py *)",
"settings_file": "/Users/name/.claude/settings.json",
"action": "added",
"success": true
}
Remove individual script path permissions (redundant with executor pattern).
python3 .plan/execute-script.py plan-marshall:tools-permission-sync:marketplace-sync cleanup-scripts \
--target global \
--remove-broad-python \
--dry-run
Output (JSON):
{
"individual_script_permissions": ["Bash(python3 /path/to/scripts/foo.py:*)"],
"individual_count": 5,
"broad_python_found": true,
"broad_python_removed": true,
"action": "would_remove",
"total_would_remove": 6
}
Complete migration: add executor permission + cleanup redundant permissions.
python3 .plan/execute-script.py plan-marshall:tools-permission-sync:marketplace-sync migrate-executor \
--target global \
--remove-broad-python \
--dry-run
Output (JSON):
{
"success": true,
"dry_run": true,
"executor": {
"permission": "Bash(python3 .plan/execute-script.py *)",
"action": "added"
},
"cleanup": {
"individual_removed": 5,
"broad_python_removed": true
},
"summary": "Migrated to executor-only pattern: 1 permission replaces 5 individual script permissions"
}
The executor pattern uses a single permission for all marketplace scripts:
Bash(python3 .plan/execute-script.py *)This replaces individual script path permissions because the executor invokes scripts via subprocess (not checked by Claude Code permissions).
ensure-executor to add the executor permissioncleanup-scripts to remove redundant individual permissionsmigrate-executor to do both in one step| Target | File |
|--------|------|
| global | ~/.claude/settings.json |
| project | .claude/settings.json or .claude/settings.local.json |
The plan-marshall skill uses this during setup:
.plan/execute-script.pyBash(python3 .plan/execute-script.py *) to global settingspython3 .plan/execute-script.py plan-marshall:tools-permission-sync:marketplace-sync ensure-executor \
--target global
All operations return JSON with error details:
{
"error": "Settings file not found: /path/to/settings.json",
"success": false
}
tools
Plan-marshall-domain implementor of the ext-self-review-{domain} extension point. Surfaces deterministic candidates (regexes, user-facing strings, markdown sections, symmetric-pair functions, flag-guard pairs, contract sources, schema-bearing files) for pre-submission structural self-review.
development
The single shared contract every untrusted-external-content ingestion surface loads — reader/orchestrator/writer isolation, the deterministic validator script as the containment boundary, and the output-schema discipline for candidate structs parsed from web pages, GitHub issue/PR/comment bodies, and Sonar issue messages
development
Domain-invariant recipe for deliberate wide-scope simplification campaigns across a scope x thoroughness cell, with a T4+ relation-graph pre-deliverable
testing
A test skill for README generation