Claude-skill-registry-data manage-files

Generic file I/O operations for plan directories

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry-data
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry-data "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/manage-files" ~/.claude/skills/majiayu000-claude-skill-registry-data-manage-files && rm -rf "$T"
manifest: data/manage-files/SKILL.md
source content

Manage Files Skill

Generic file operations for plan directories. Provides basic CRUD operations for any file within a plan directory.

What This Skill Provides

  • Generic file read/write/remove operations
  • Directory listing and creation
  • File existence checking
  • Plan directory create-or-reference (atomic check/create)
  • No content validation (caller provides complete content)

When to Activate This Skill

Activate this skill when:

  • Reading or writing arbitrary files in a plan directory
  • Creating subdirectories within a plan
  • Listing plan contents
  • Checking if files exist

Note: For typed plan documents (

request.md
,
solution_outline.md
), use
pm-workflow:manage-plan-documents
instead. For domain-specific files (config.toon, references.toon, status.toon), use the dedicated manage-* skills.


Storage Location

Files are stored in plan directories:

.plan/plans/{plan_id}/
  request.md
  solution_outline.md
  config.toon
  references.toon
  status.toon
  tasks/

Operations

Script:

pm-workflow:manage-files:manage-files

read

Read file content from a plan directory.

python3 .plan/execute-script.py pm-workflow:manage-files:manage-files read \
  --plan-id {plan_id} \
  --file notes.md

Output: Raw file content (no wrapping)

write

Write content to a file in a plan directory.

python3 .plan/execute-script.py pm-workflow:manage-files:manage-files write \
  --plan-id {plan_id} \
  --file request.md \
  --content "# Request Title

Task description with multiline content.

## Section

More content here..."

Parameters:

  • --plan-id
    (required): Plan identifier
  • --file
    (required): Relative file path within plan directory
  • --content
    : Content to write (mutually exclusive with
    --stdin
    )
  • --stdin
    : Read content from stdin instead of
    --content

Note: The

--content
parameter supports multiline content. Do NOT use
--stdin
with shell heredocs or cat commands.

Output: Prints "Created: {path}" to stderr, exit code 0 on success

remove

Remove a file from a plan directory.

python3 .plan/execute-script.py pm-workflow:manage-files:manage-files remove \
  --plan-id {plan_id} \
  --file old-file.md

Output: Confirmation message to stderr, exit code 0 on success

list

List files in a plan directory.

python3 .plan/execute-script.py pm-workflow:manage-files:manage-files list \
  --plan-id {plan_id} \
  [--dir subdir]

Output: Simple file listing, one per line

exists

Check if a file exists.

python3 .plan/execute-script.py pm-workflow:manage-files:manage-files exists \
  --plan-id {plan_id} \
  --file config.toon

Output: Exit code 0 if exists, 1 if not

mkdir

Create a subdirectory in a plan directory.

python3 .plan/execute-script.py pm-workflow:manage-files:manage-files mkdir \
  --plan-id {plan_id} \
  --dir requirements

Output: Confirmation message to stderr, exit code 0 on success

create-or-reference

Create a plan directory if it doesn't exist, or reference an existing one. This is an atomic operation that replaces the two-step pattern of listing plans and checking for conflicts.

python3 .plan/execute-script.py pm-workflow:manage-files:manage-files create-or-reference \
  --plan-id {plan_id}

Output (TOON format):

When plan is newly created:

status: success
plan_id: my-feature
action: created
path: /path/to/.plan/plans/my-feature

When plan already exists:

status: success
plan_id: my-feature
action: exists
path: /path/to/.plan/plans/my-feature
current_phase: refine
domain: java

Use case: Called by plan-init to atomically check/create plan directories.

delete-plan

Delete an entire plan directory. Used when user selects "Replace" for an existing plan during plan-init.

python3 .plan/execute-script.py pm-workflow:manage-files:manage-files delete-plan \
  --plan-id {plan_id}

Output (TOON format):

On success:

status: success
plan_id: my-feature
action: deleted
path: /path/to/.plan/plans/my-feature
files_removed: 5

On error (plan not found):

status: error
plan_id: my-feature
error: plan_not_found
message: Plan directory does not exist: /path/to/.plan/plans/my-feature

Use case: Called by plan-init when user selects "Replace" to delete existing plan before creating new one. See

pm-workflow:phase-1-init/standards/plan-overwrite.md
for the full workflow.


Scripts

ScriptPurposeUsage
pm-workflow:manage-files:manage-files
All file operations via subcommands
python3 .plan/execute-script.py pm-workflow:manage-files:manage-files {subcommand} --help

Key Design Principles

  1. plan_id only - Never pass full paths, script resolves base via
    base_path()
  2. Relative file paths -
    --file
    accepts relative paths within plan dir (e.g.,
    requirements/REQ-001.toon
    )
  3. Generic file operations - Not domain-specific (no parse-plan, write-config)
  4. Plain output -
    read
    returns raw content; mutations return minimal status
  5. No validation - Caller provides complete content; no content validation

Validation Rules

CheckValidation
plan_id formatkebab-case, no special chars
file pathNo
..
, no absolute paths
directoryMust exist (unless mkdir)
contentNon-empty for write

Error Handling

status: error
plan_id: my-feature
file: nonexistent.md
error: file_not_found
message: File does not exist

suggestions[2]:
- Check file name spelling
- Use list subcommand to see available files

Integration Points

With Domain Skills

Domain-specific skills (manage-config, manage-references, manage-lifecycle) may use this skill for basic file operations, or import shared libraries directly.

With Orchestration Skills

Plan orchestration skills (plan-init, solution-outline, task-plan, plan-execute) use this skill for generic file I/O.


Relationship to Domain Skills

SkillManagesUse manage-files for
manage-configconfig.toonN/A (use manage-config)
manage-referencesreferences.toonN/A (use manage-references)
manage-lifecyclestatus.toonN/A (use manage-lifecycle)
manage-plan-documentsrequest.mdN/A (use manage-plan-documents)
manage-solution-outlinesolution_outline.mdN/A (use manage-solution-outline)
manage-taskstasks/*.toonN/A (use manage-tasks)
manage-filesany other fileGeneric read/write/list