Agent skill

Aif Archive

by unxed in unxed/f4

Archive completed plans and roadmap milestones. An agent skill from unxed/f4.

BSD-3-ClauseAuto-check passedProduct & Project Management

Install Aif Archive

skills CLI
$ npx skills add unxed/f4 --skill aif-archive -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install unxed/f4 aif-archive --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/unxed/f4.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/aif-archive .claude/skills/aif-archive && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
aif-archive
GitHub stars
243
Token cost
~3.2k tokens
SKILL.md length
1,237 words
Files
1
Skills in repo
36
Repo updated
First seen
Licence
BSD-3-Clause

At a glance

Archive completed plans and roadmap milestones. An agent skill from unxed/f4.

  • Works in 3 steps: Load Config → Parse Arguments → Execute Mode
  • User says archive plans
  • SKILL.md covers Workflow, Important Rules and Artifact Ownership
  • Calls git

What it does

Aif Archive is an agent skill from unxed/f4. Archive completed plans and roadmap milestones. Moves finished plans to the archive directory and optionally trims closed milestones from ROADMAP.md. Use when user says "archive plans", "clean up plans", "archive completed", or "trim roadmap".

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Product & Project Management, covering Project management. The repository describes itself as: dual pane like a charm. The licence is BSD-3-Clause.

When your agent uses it

  • User says archive plans
  • Archive completed

Example prompts

  • “archive plans”
  • “clean up plans”
  • “archive completed”
  • “/aif-archive”

Requirements

  • Pre-approved tools (allowed-tools): Read, Write, Edit, Glob, Grep, Bash(mv *), Bash(mkdir *), Bash(git *), AskUserQuestion

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Load Config
  2. Parse Arguments
  3. Execute Mode

What it can do on your machine

Read from SKILL.md and the folder at commit 772edc7. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Glob
    • Grep
    • Bash(mv *)
    • Bash(mkdir *)
    • Bash(git *)
    • AskUserQuestion

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Aif Archive loads about 3.2k tokens when it runs. Until then it costs about 64 tokens; SKILL.md has 1,237 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~64
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from unxed/f4 at commit 772edc7, republished under its BSD-3-Clause licence (© unxed). 1,237 words, ~3,238 tokens.

Download SKILL.mdSave it as .claude/skills/aif-archive/SKILL.md (or your agent's skills folder).
name
aif-archive
description
Archive completed plans and roadmap milestones. Moves finished plans to the archive directory and optionally trims closed milestones from ROADMAP.md. Use when user says "archive plans", "clean up plans", "archive completed", or "trim roadmap".
allowed-tools
Read, Write, Edit, Glob, Grep, Bash(mv *), Bash(mkdir *), Bash(git *), AskUserQuestion
argument-hint
[list | --roadmap | --all | <plan-name>]
disable-model-invocation
false
metadata.author
AI Factory
metadata.version
1.0
metadata.category
workflow

Archive — Move completed plans and roadmap snapshots

Archive completed single-file plans and ultra bundle directories from paths.plans/ into paths.archive/plans/ and optionally trim closed milestones from ROADMAP.md into dated snapshots under paths.archive/roadmap/.

Workflow

Step 0: Load Config

Read .ai-factory/config.yaml if it exists to resolve:

  • paths.plans (default: .ai-factory/plans/)
  • paths.archive (default: .ai-factory/archive/)
  • paths.plan (default: .ai-factory/PLAN.md)
  • paths.fix_plan (default: .ai-factory/FIX_PLAN.md)
  • paths.roadmap (default: .ai-factory/ROADMAP.md)
  • workflow.plan_id_format (default: slug) — active values: slug and sequential. timestamp and uuid are reserved and behave like slug. Treat any unknown value as slug.
  • language.ui for user-facing prompts

If config doesn't exist, use defaults listed above.

Read .ai-factory/skill-context/aif-archive/SKILL.md if it exists — project-specific overrides take priority over general instructions.

Step 1: Parse Arguments

Extract mode from arguments:

(no args)        → interactive mode: scan, show completable plans, ask which to archive
list             → show archive contents, then STOP
--roadmap        → trim closed milestones from ROADMAP.md into a snapshot
--all            → archive ALL completed plans (ask confirmation first)
<plan-name>      → archive a specific plan by filename or partial stem match

Parsing rules:

  • list and --roadmap are mutually exclusive with <plan-name> and --all
  • If multiple conflicting modes are given, emit error and STOP
  • <plan-name> can be:
    • full filename: 0005_feature-auth.md
    • ultra directory/entrypoint: 0005_feature-auth or 0005_feature-auth/index.md
    • stem without extension: 0005_feature-auth
    • partial match: feature-auth (must match exactly one plan)
Step 2: Execute Mode

Mode: Interactive (no arguments)
  1. Scan paths.plans/ for root *.md files and direct child */index.md candidates using Glob. Exclude the resolved paths.plan and paths.fix_plan; count a directory only when its entrypoint declares <!-- aif:plan-mode:ultra -->. Do not treat phase files or unrelated directories as plans.
  2. For each artifact, read the entrypoint's ## Tasks section.
  3. Determine completion: a plan is completed when ALL task checkboxes are - [x]. Plans with any - [ ] are incomplete.
  4. If no completed plans found:
    No completed plans found in <paths.plans/>.
    → STOP.
  5. Display completed plans:
    Completed plans ready to archive:
    
      1. 0001_feature-alpha.md (completed 2026-05-20)
      2. 0003_feature-gamma.md (completed 2026-05-24)
    
    Incomplete plans (skipped):
      - 0005_feature-delta.md (3/7 tasks done)
  6. Ask which to archive:
    AskUserQuestion: Which plans to archive?
    
    Options:
    1. All completed plans listed above
    2. Select specific plans (enter numbers)
    3. Cancel
  7. Execute archive operation for selected plans (see Archive Operation).

Mode: list
  1. Check if <paths.archive>/plans/ exists.
  2. If not: Archive is empty. No plans have been archived yet. → STOP.
  3. Glob root <paths.archive>/plans/*.md files and direct child <paths.archive>/plans/*/index.md entrypoints containing exactly one <!-- aif:plan-mode:ultra -->.
  4. For each archived artifact, extract its date from YAML frontmatter (full plans) or <!-- aif:archived:YYYY-MM-DD --> immediately after the ultra marker (index.md).
  5. Display:
    Archived plans (<paths.archive>/plans/):
    
      1. 0001_feature-alpha.md  (archived: 2026-05-20)
      2. 0003_feature-gamma.md  (archived: 2026-05-24)
    
    Total: 2 archived plans
  6. Check <paths.archive>/roadmap/ for snapshots and list them if present:
    Roadmap snapshots (<paths.archive>/roadmap/):
    
      1. 2026-05-20_roadmap-snapshot.md (3 milestones)
  7. STOP.

Mode: <plan-name>
  1. Resolve <plan-name> to one artifact in paths.plans/:
    • Try exact root filename, exact ultra directory, or exact */index.md match
    • Then try with .md extension appended
    • Then try partial match against root filenames and ultra directory names
  2. If no match: Plan not found: <plan-name> with suggestions → STOP.
  3. If multiple matches: list them and ask user to be more specific → STOP.
  4. For a directory match, read the entrypoint and require <!-- aif:plan-mode:ultra -->; otherwise it is not an archivable AI Factory plan.
  5. Read the matched entrypoint and check completion status.
  6. If incomplete:
    Plan <filename> is not completed (5/8 tasks done).
    Only completed plans can be archived.
    → STOP.
  7. Execute archive operation (see Archive Operation).

Mode: --all
  1. Scan paths.plans/ for completed plans (same logic as interactive mode).
  2. If no completed plans: inform and STOP.
  3. Display list and ask confirmation:
    AskUserQuestion: Archive ALL completed plans?
    
      1. 0001_feature-alpha.md
      2. 0003_feature-gamma.md
    
    Options:
    1. Yes, archive all 2 plans
    2. Cancel
  4. Execute archive operation for all confirmed plans.

Mode: --roadmap
  1. Read the resolved paths.roadmap file.
  2. If it doesn't exist: No ROADMAP.md found at <path>. → STOP.
  3. Find milestones with - [x] checkbox (completed milestones).
  4. If no completed milestones: No closed milestones to archive. → STOP.
  5. Display and ask confirmation:
    Closed milestones found in ROADMAP.md:
    
      - [x] MVP Launch — core features shipped
      - [x] Beta Testing — user feedback round
    
    AskUserQuestion: Trim these milestones from ROADMAP.md into a snapshot?
    
    Options:
    1. Yes, create snapshot and trim
    2. Cancel
  6. Create snapshot:
    • mkdir -p <paths.archive>/roadmap/
    • Determine snapshot filename: YYYY-MM-DD_roadmap-snapshot.md
    • Collision check. Before writing, verify the destination does not already exist:
      Read <paths.archive>/roadmap/YYYY-MM-DD_roadmap-snapshot.md
      If the file exists, append a counter suffix to produce a non-colliding name: YYYY-MM-DD_roadmap-snapshot-2.md, YYYY-MM-DD_roadmap-snapshot-3.md, etc. Check each candidate until a free name is found.
    • Write the resolved snapshot path with:
      markdown
      # Roadmap Snapshot — YYYY-MM-DD
      
      Archived from: <paths.roadmap>
      
      ## Archived Milestones
      
      - [x] MVP Launch — core features shipped
      - [x] Beta Testing — user feedback round
  7. Edit paths.roadmap: remove the archived - [x] lines from the ## Milestones section. Keep the ## Completed table if it exists. Do NOT edit paths.roadmap unless the snapshot write in step 6 succeeded.
  8. Logging: INFO [aif-archive] roadmap snapshot: <resolved-path> (<N> milestones archived)

Show full SKILL.md (656 more words)Show less
Archive Operation (plans)

For each plan artifact to archive:

  1. mkdir -p <paths.archive>/plans/

  2. Collision check. Before moving, verify the destination does not already exist:

    Read <paths.archive>/plans/<original-name>          # full plan
    Read <paths.archive>/plans/<original-name>/index.md # ultra bundle

    If the file exists:

    • Single plan (interactive or <plan-name>): STOP with an error:
      ERROR [aif-archive] destination already exists: <paths.archive>/plans/<filename>
      A previously archived plan has the same filename. This can happen when
      sequential numbering reuses a freed number after archiving.
      To resolve: rename the existing archive file, or delete it if it is no
      longer needed.
    • Batch (--all): SKIP this plan with a warning, continue to the next:
      WARN [aif-archive] skipped: <filename> — destination already exists

    Do NOT overwrite in either case.

  3. Validate an ultra bundle before moving it. Read index.md and require:

    • exactly one <!-- aif:plan-mode:ultra -->, as the first line or immediately after an optional first-line <!-- handoff:task:<id> -->;
    • a non-empty ## Phase Index;
    • every linked phase path is a direct child of the bundle and exists.

    A malformed bundle is not safe to archive. STOP for a single plan, or emit WARN [aif-archive] skipped malformed ultra bundle: <filename> and continue in --all mode.

  4. Move the complete source artifact into the archive path first:

    bash
    mv <paths.plans>/<name> <paths.archive>/plans/<name>

    For ultra, <name> is the whole directory, so all linked phase files move together. This atomically removes the plan from active discovery.

  5. Add archive metadata to the moved entrypoint using Edit (index.md for ultra, the moved plan file otherwise).

    For ultra, preserve the canonical header and insert this comment immediately after <!-- aif:plan-mode:ultra -->:

    markdown
    <!-- aif:archived:YYYY-MM-DD -->

    Never prepend YAML or move the ultra marker: it must remain the first line or immediately after an optional first-line Handoff annotation.

    For a full plan, if the file already has YAML frontmatter (between --- markers at the top):

    • Use Edit to add archived: YYYY-MM-DD field inside the existing frontmatter block.

    If the full plan has no YAML frontmatter:

    • Use Edit to prepend a minimal frontmatter block before the first line:
      yaml
      ---
      archived: YYYY-MM-DD
      ---

    The original filename or directory name is preserved exactly, including any sequential NNNN_ prefix.

  6. Logging: INFO [aif-archive] archived: <filename> -> <paths.archive>/plans/<filename>

  7. After all plans are processed, display summary:

    ## Archive Complete
    
    Archived N plan(s) to <paths.archive>/plans/:
      - 0001_feature-alpha.md
      - 0003_feature-gamma.md
    
    Skipped: K (destination already exists)
      - 0002_feature-beta.md
    
    Plans directory: <paths.plans/> (M plans remaining)

    Omit the "Skipped" section when K is 0.

Completion Detection Algorithm

A plan is completed when:

  1. The plan entrypoint contains a ## Tasks section (case-insensitive header match).
  2. ALL lines matching the pattern - [x] or - [ ] within the Tasks section (and its subsections) are checked: every checkbox is - [x].
  3. If the Tasks section contains zero checkboxes, the plan is considered not completed (empty plans are not archivable).

Edge cases:

  • Checkboxes outside ## Tasks (e.g., in ## Settings or ## Commit Plan) are NOT counted for completion.
  • Nested checkboxes (indented - [x]) ARE counted.
  • Plans whose entrypoint lacks ## Tasks are not archivable — emit WARN [aif-archive] <name> has no ## Tasks section; skipping.
Completion Date Inference

When displaying "completed" dates in interactive mode:

  1. Check YAML frontmatter for a completed field — use if present.
  2. Fall back to git: git log -1 --format=%ai -- <plan-file> to get last modification date.
  3. Fall back to filesystem: entrypoint modification time.

Important Rules

  1. Never archive incomplete plans — all tasks must be - [x]
  2. Always ask confirmation before --all and --roadmap operations
  3. Preserve original file/directory names — including sequential NNNN_ prefix
  4. Add archive metadata — YAML frontmatter for full plans; the stable <!-- aif:archived:YYYY-MM-DD --> comment after the ultra marker for bundles
  5. Do not modify fast plans (paths.plan) or fix plans (paths.fix_plan) — those are single-file artifacts managed by /aif-implement and /aif-fix
  6. Do not count archived plans for sequential numbering — archived plans live in paths.archive/plans/, not paths.plans/, so /aif-plan sequential scan does not include them

Artifact Ownership

  • Owns: paths.archive/plans/*.md, archived ultra bundle directories, and paths.archive/roadmap/*.md
  • Reads: root paths.plans/*.md, direct child ultra */index.md + linked phases, and paths.roadmap
  • Modifies: paths.roadmap (only with --roadmap, only after confirmation)
  • Does NOT touch: paths.plan, paths.fix_plan, paths.description, paths.architecture, paths.rules_file

© unxed, BSD-3-Clause. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/aif-archive of unxed/f4.

Open the folder on GitHubat commit 772edc7

Compare with similar skills

Aif Archive next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Aif Archive compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Aif Archive this skillunxed/f4243—~3.2kAutomated safety check: PassBSD-3-Clause
CCPM Project Managementautomazeio/ccpm8.4k—~1.1kAutomated safety check: PassMIT
Uvastral-sh/claude-code-plugins3132 repos~980Automated safety check: PassApache-2.0
Project Managementkunchenguid/firstmate7.8k—~2.1kAutomated safety check: PassMIT
Hivemind Goalsactiveloopai/hivemind1.6k—~1.7kAutomated safety check: NotesApache-2.0
Ichartjswanghetommy/ichartjs352—~4.3kAutomated safety check: PassApache-2.0

Similar skills

  • Runs a spec-driven workflow from PRD to epic to GitHub issues to parallel agents, with status, standup and blocked-work reports from bundled scripts.

    8.4k GitHub stars~1.1k tokensUpdated 6 mo ago
    Product & Project ManagementAuto-check passed
  • Uv

    astral-sh/claude-code-plugins

    Official

    Guide for using uv, the Python package and project manager. An agent skill from astral-sh/claude-code-plugins.

    313 GitHub starsUsed in 2 repos~980 tokens
    Product & Project ManagementAuto-check passed
  • Project Management

    kunchenguid/firstmate

    Agent-only procedure for Firstmate project management. An agent skill from kunchenguid/firstmate.

    7.8k GitHub stars~2.1k tokensUpdated yesterday
    Product & Project ManagementAuto-check passed
  • Hivemind Goals

    activeloopai/hivemind

    Create, track and update team goals via the Deeplake virtual filesystem at memory/goal/.

    1.6k GitHub stars~1.7k tokensUpdated 12 days ago
    Product & Project ManagementAuto-check: notes
  • Ichartjs

    wanghetommy/ichartjs

    Plan, validate, render, explain, and safely edit iChart.js visualizations from tabular, project, or diagram data.

    352 GitHub stars~4.3k tokensUpdated 2 days ago
    Product & Project ManagementAuto-check passed
  • Hivemind Goals

    activeloopai/hivemind

    Create, track and update team goals in Hivemind via the hivemind CLI.

    1.6k GitHub stars~814 tokensUpdated 12 days ago
    Product & Project ManagementAuto-check passed

More from unxed/f4

All 36 skills in this repo
  • Comprehensive documentation guide for Golang projects, covering godoc comments, README, CONTRIBUTING, CHANGELOG, Go Playground, Example tests, API docs, and llms.txt.

    243 GitHub starsUsed in 3 repos~3.5k tokens
    Auto-check passed
  • Golang code style conventions — line length and breaking, variable declarations, control flow clarity, when comments help vs hurt.

    243 GitHub starsUsed in 3 repos~2.5k tokens
    Auto-check passed
  • Comprehensive guide for Go database access — parameterized queries, struct scanning, NULLable columns, transactions, isolation levels, SELECT FOR UPDATE, connection pool, batch processing, context…

    243 GitHub starsUsed in 2 repos~2.9k tokens
    Auto-check passed
  • Security audit checklist based on OWASP Top 10 and best practices.

    243 GitHub stars~5.4k tokensUpdated today
    Auto-check: notes
  • Go (Golang) naming conventions — covers packages, constructors, structs, interfaces, constants, enums, errors, booleans, receivers, getters/setters, functional options, acronyms, test functions, and…

    243 GitHub starsUsed in 2 repos~3.1k tokens
    Auto-check passed
  • Golang concurrency design — goroutine lifecycle and leak prevention, channels and select, channel ownership and direction, sync.Mutex/RWMutex/sync.Map/sync.Once/atomics, errgroup, singleflight…

    243 GitHub starsUsed in 1 repo~2.4k tokens
    Auto-check passed

Questions about Aif Archive

What does Aif Archive do?

Archive completed plans and roadmap milestones. An agent skill from unxed/f4. Aif Archive is an agent skill from unxed/f4. Archive completed plans and roadmap milestones.

When should I use Aif Archive?

Aif Archive fits situations like: user says archive plans; archive completed.

How do I install Aif Archive in Claude Code?

Run `npx skills add unxed/f4 --skill aif-archive -a claude-code`. Or copy the skill folder (.agents/skills/aif-archive in unxed/f4) into .claude/skills/aif-archive in your project. Claude Code loads it when a task matches its description.

How do I install Aif Archive in Codex?

Run `npx skills add unxed/f4 --skill aif-archive -a codex`. Or copy the skill folder (.agents/skills/aif-archive in unxed/f4) into .agents/skills/aif-archive in your project. Codex loads it when a task matches its description.

Can I use Aif Archive in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add unxed/f4 --skill aif-archive -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/aif-archive, .gemini/skills/aif-archive, .github/skills/aif-archive and .opencode/skills/aif-archive in your project.

What does Aif Archive need to run?

Going by SKILL.md and its folder, Aif Archive needs the command-line tools its instructions call (git). Its frontmatter pre-approves these tools: Read, Write, Edit, Glob, Grep, Bash(mv *), Bash(mkdir *), Bash(git *), AskUserQuestion.

Does Aif Archive access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Aif Archive safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Aif Archive use?

Aif Archive is published under the BSD-3-Clause licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Aif Archive use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Aif Archive?

Skills that share tags, products or a category with Aif Archive: CCPM Project Management (automazeio/ccpm, 8.4k stars), Uv (astral-sh/claude-code-plugins, 313 stars), Project Management (kunchenguid/firstmate, 7.8k stars) and Hivemind Goals (activeloopai/hivemind, 1.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Aif Archive?

unxed (a GitHub user) maintains it in unxed/f4, which has 243 GitHub stars. The repository holds 36 skills in this directory. The repository was last updated on October 10, 2026.

Source: unxed/f4 on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.