Contributor-First PR Merge
HKUDS/OpenHarness
Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.
Retire a closed issue's working artifacts out of specs/ into the GitHub wiki — use when the user asks to archive a finished issue, empty out specs/ for a done task, or move an issue's…
$ npx skills add foyzulkarim/claude-lens --skill archive-issue -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install foyzulkarim/claude-lens archive-issue --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/foyzulkarim/claude-lens.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/archive-issue .claude/skills/archive-issue && rm -rf skills-srcUse ~/.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/
Install the "archive-issue" agent skill from https://github.com/foyzulkarim/claude-lens/tree/main/.claude/skills/archive-issue into .claude/skills/archive-issue/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "archive-issue", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/foyzulkarim/claude-lens/tree/main/.claude/skills/archive-issueType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add foyzulkarim/claude-lens --skill archive-issue -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install foyzulkarim/claude-lens archive-issue --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/foyzulkarim/claude-lens.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/archive-issue .agents/skills/archive-issue && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "archive-issue" agent skill from https://github.com/foyzulkarim/claude-lens/tree/main/.claude/skills/archive-issue into .agents/skills/archive-issue/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "archive-issue", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add foyzulkarim/claude-lens --skill archive-issue -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install foyzulkarim/claude-lens archive-issue --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/foyzulkarim/claude-lens.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/archive-issue .cursor/skills/archive-issue && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "archive-issue" agent skill from https://github.com/foyzulkarim/claude-lens/tree/main/.claude/skills/archive-issue into .cursor/skills/archive-issue/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "archive-issue", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/foyzulkarim/claude-lens.git --path .claude/skills/archive-issue--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add foyzulkarim/claude-lens --skill archive-issue -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install foyzulkarim/claude-lens archive-issue --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/foyzulkarim/claude-lens.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/archive-issue .gemini/skills/archive-issue && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "archive-issue" agent skill from https://github.com/foyzulkarim/claude-lens/tree/main/.claude/skills/archive-issue into .gemini/skills/archive-issue/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "archive-issue", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install foyzulkarim/claude-lens archive-issueInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add foyzulkarim/claude-lens --skill archive-issue -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/foyzulkarim/claude-lens.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/archive-issue .github/skills/archive-issue && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "archive-issue" agent skill from https://github.com/foyzulkarim/claude-lens/tree/main/.claude/skills/archive-issue into .github/skills/archive-issue/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "archive-issue", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add foyzulkarim/claude-lens --skill archive-issue -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install foyzulkarim/claude-lens archive-issue --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/foyzulkarim/claude-lens.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/archive-issue .opencode/skills/archive-issue && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "archive-issue" agent skill from https://github.com/foyzulkarim/claude-lens/tree/main/.claude/skills/archive-issue into .opencode/skills/archive-issue/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "archive-issue", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
archive-issueRetire a closed issue's working artifacts out of specs/ into the GitHub wiki — use when the user asks to archive a finished issue, empty out specs/ for a done task, or move an issue's…
Archive Issue is an agent skill from foyzulkarim/claude-lens. Retire a closed issue's working artifacts out of specs/ into the GitHub wiki — use when the user asks to archive a finished issue, empty out specs/ for a done task, or move an issue's requirements/architecture/review docs to the wiki.
Its SKILL.md is about 2.8k 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 Development, covering Software architecture. It works with GitHub and Git. The repository describes itself as: A local dashboard for visualizing your Claude Code usage — sessions, token costs, cache performance, tool calls, and daily breakdowns. The licence is MIT.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 7937ea1. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Archive Issue loads about 2.8k tokens when it runs. Until then it costs about 62 tokens; SKILL.md has 1,552 words of instructions outside code blocks.
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.
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.
The full file from foyzulkarim/claude-lens at commit 7937ea1, republished under its MIT licence (© foyzulkarim). 1,552 words, ~2,834 tokens.
.claude/skills/archive-issue/SKILL.md (or your agent's skills folder).Once an issue closes, GitHub is the source of truth for its scope — but its requirements,
architecture, and code-review docs under specs/ still hold reasoning worth keeping. This skill
retires them out of specs/ straight into the GitHub wiki (specs/wiki-structure.md is the
authoritative layout spec — read it before doing anything else if you haven't already; the
Correlation model section there is what Steps 1–2 below execute). Nothing archived is ever
committed to the main repo — the wiki is the only place this content lives.
Work happens in a local working clone of the wiki repo, conventionally at .wiki/ in the main repo
root (gitignored — never part of this repo's history):
.wiki/ doesn't exist: git clone <repo>.wiki.git .wiki.git -C .wiki pull --ff-only before making any changes, so you're not archiving on
top of a stale copy.All of Steps 3–5 write into this clone, not into the main repo.
Take the issue number (or plan-task ID, e.g. #P1-1) from the user — pass it explicitly
(/archive-issue 70, or "archive issue 70") whenever you know it; this pins Step 2's resolution to
that one issue's artifacts instead of leaving them to be found by scanning, which is where
cross-issue mix-ups come from. The issue record (specs/issues/<ID>-<slug>.md) is the normal
anchor for everything that follows — find it by scanning specs/issues/*.md frontmatter for
issue: N (if given a number) or by its filename prefix (if given a plan-task ID). From that one
file, read off: primary plan-task <ID>, slug <slug>, issue number N, GitHub URL, and phase
(derived from <ID>'s prefix P<phase>-<n>; no ID → Unphased).
If the issue record is already gone but other artifacts for that N still linger (a partial or
interrupted prior archive can leave specs/context/<N>.md, a specs/requirements//
specs/architecture/ file, or a specs/reviews/REV-*.md / CODE-REVIEW-*.md behind without the
issue record) — don't treat the missing record as "nothing to archive." Derive <ID>/<slug> from
whatever's left instead:
specs/context/<N>.md's frontmatter description: carries #P<phase>-<n> — <title>; a surviving
REQ-<slug>.md/ARCH-<slug>.md filename carries <slug> directly; gh issue view N gives the
title, URL, and closed state regardless. Confirm closed via gh issue view N in this case since
there's no issue record to have already recorded it.
Confirm the issue's GitHub state is closed. If it's still open, stop and say so — this is a
retirement step, not a drafting one; open-issue artifacts stay in specs/ where the active pipeline
expects them. Make no changes to specs/ or .wiki/.
If the issue's title notes it absorbed another plan-task (e.g. "#13 absorbs #P0-5"), the absorbed ID is noted in the hub overview later — it does not change which phase this issue is grouped under (the primary task's phase always wins).
Using <ID>, <slug>, and N from Step 1, resolve each source directly (no searching required —
this is the point of the anchor):
| Source | Resolved as | Sub-page? |
|---|---|---|
specs/issues/<ID>-<slug>.md | is the anchor | No — fold its Summary into the hub; link the GitHub issue instead of duplicating the body |
specs/context/<N>.md | direct path | No — overlaps the issue body; delete, don't mirror |
specs/requirements/REQ-<slug>.md | direct path, if it exists | Yes → issue-NNN/REQ-<slug>.md — same filename, only the directory changes |
specs/architecture/ARCH-<slug>.md | direct path, if it exists | Yes → issue-NNN/ARCH-<slug>.md — same filename |
Review report — current convention: specs/reviews/REV-PR-<N>.md / REV-BRANCH-<safe-name>.md / REV-STAGED-*.md / REV-DIFF-*.md (per ~/.claude/skills/review/SKILL.md's "General mode" save location); older /review output may still linger as CODE-REVIEW-*.md at the repo root or specs/review/ — search all of them, e.g. find . -maxdepth 2 -iname 'CODE-REVIEW-*.md'; find specs/reviews -iname 'REV-*.md', don't assume one fixed spot | every file whose Target metadata row's branch is feat/<N>/… — matched by branch, never by assuming the PR number equals the issue number, and never by directory | Yes, one per matching file, each keeping its original filename (REV-PR-76.md stays REV-PR-76.md, CODE-REVIEW-PR-60.md stays CODE-REVIEW-PR-60.md) |
Most issues (bugs, chores, small enhancements) never had a REQ/ARCH/review doc — only add the sub-pages that actually exist. Don't invent placeholder pages for missing docs.
Never rename a file on archive. Only its directory changes (specs/requirements/ →
issue-NNN/, etc.) — the filename itself is untouched. This is deliberate (see
wiki-structure.md's Rules): generic names like requirements.md/review.md were tried once and
reverted the same day because they break recognition against the specs/ names these documents are
already known by.
Multiple reviews: if more than one review report's Target branch matches feat/<N>/…
(multiple PRs against the same issue), every one gets its own sub-page under its own original name —
REV-PR-60.md and REV-PR-72.md (or their CODE-REVIEW-*.md equivalents) both land in issue-NNN/
unchanged, no renaming needed since their own filenames already disambiguate them. A branch-mode
review (no PR — its Target names a branch/commit rather than a PR URL) archives the same way under
its own name (e.g. REV-BRANCH-feat-13-…md, or the legacy CODE-REVIEW-BRANCH-feat-13-…md); the
branch-mode nature doesn't block sub-page creation, only affects the hub's PR(s): line (Step 3).
If a review report's branch doesn't obviously match the issue slug, check its Target metadata row
before attributing it — don't archive a review that belongs to a different issue. If it genuinely
can't be matched, leave it out and flag it to the user rather than guessing.
.wiki/issue-NNN.md (zero-padded to 3 digits). The metadata line is mandatory and must preserve
every correlation key, since specs/ is about to be emptied of them:
**Plan task:** #P<X>-<Y> · **Phase:** <X> · **PR(s):** #NN[, #MM…] · **Closed:** YYYY-MM-DD · [GitHub issue #N](url)**Plan task:** — (unphased), and this issue's index entry goes under
## Unphased in Step 5, not a phase heading.**PR(s):** — (branch review) or
**PR(s):** — respectively; never omit the field.Below the metadata line: a paragraph of what shipped (pull from the issue body's Summary — don't
re-derive it), a bullet list linking each sub-page that exists, and a one-line Outcome pulled from the
acceptance criteria / review verdict. Follow the shape of the wiki's existing issue-013.md (the
worked example referenced in specs/wiki-structure.md) for the overview/Outcome prose style.
Link sub-pages by bare basename, never full path. Write [Label](CODE-REVIEW-PR-63), not
[Label](issue-NNN/CODE-REVIEW-PR-63.md) — even though the file lives at
issue-NNN/CODE-REVIEW-PR-63.md. GitHub's wiki renders a .md-suffixed link as a raw-file link
instead of a wiki-page link, which silently breaks navigation (this regressed for issues #20–#26
before being caught and fixed — see the Rules in specs/wiki-structure.md). Drop both the
issue-NNN/ directory prefix and the .md extension in the link text; the directory nesting is only
for organizing the wiki's git tree.
Carry the REQ/ARCH/review content over largely as-is — these are already well-formed docs; don't
rewrite them, just relocate them into .wiki/issue-NNN/ under their original filenames and drop
anything that's now stale (e.g. a REQ doc's "next step: run /plan-architecture" footer no longer
applies once archived). The sub-page vocabulary is open — REQ/ARCH/CODE-REVIEW cover the common case,
spike findings and ADR/decisions docs (whatever they're actually named) cover the rest — but every
one keeps its specs/ filename verbatim. Never invent a placeholder for a document that doesn't
exist, and never rename one that does.
Both .wiki/Home.md and .wiki/_Sidebar.md use the same phase-grouped structure
(specs/wiki-structure.md's "The model" section):
## Phase <X> — <name>), or ## Unphased if the
issue has no plan-task ID.## Phase <X> — <name> (or ## Unphased) heading — append new phase
headings in phase order, with ## Unphased last. On Home.md, a newly created phase heading gets
a ✓/◐ status marker read from that phase's current exit-criteria state in
specs/claude-lens-plan.md.Home.md if plan.md's exit criteria for that phase have
changed since the marker was last set — this can catch drift beyond just the issue being archived
right now (e.g. stale checkboxes elsewhere in plan.md); fix plan.md too if you find it..wiki/Home.md / .wiki/_Sidebar.md (with a one-line header, phase-grouped) if this is the
first archived issue overall.Remove the archived files from the main repo (git rm, in the main repo, not .wiki/) —
specs/issues/<ID>-<slug>.md, specs/context/<N>.md, whichever of specs/requirements//
specs/architecture/ were mirrored, and every matching review report wherever Step 2 found it
(specs/reviews/, repo root, specs/review/, or elsewhere) — remove from its actual location, not
an assumed one.
This is the "leave nothing behind" half of the convention: once an issue is archived, nothing about it
should remain anywhere in the main repo — not just specs/. Commit this to the main repo separately
from the wiki push in Step 7 — they're two different repos with two different histories.
Inside .wiki/: git add, commit (batch multiple issues archived in one pass into one commit if
convenient), then push to origin. Pushing to the wiki repo is a push to shared external state —
confirm with the user before pushing, same as any other push, even though the commit itself is
harmless to make locally. Report what moved where (source path → wiki page) so the user can review
before/after the push.
© foyzulkarim, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/archive-issue of foyzulkarim/claude-lens.
Open the folder on GitHubat commit 7937ea1
Archive Issue 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Archive Issue this skillfoyzulkarim/claude-lens | 251 | — | ~2.8k | Automated safety check: Pass | MIT | |
| Contributor-First PR MergeHKUDS/OpenHarness | 16k | 1 repos | ~847 | Automated safety check: Pass | MIT | |
| Create Pull Requestcline/cline | 70k | 1 repos | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Pull Request Title and Body Writeropeninterpreter/openinterpreter | 69k | 2 repos | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Draft Release Notesjamiepine/voicebox | 57k | — | ~941 | Automated safety check: Pass | MIT | |
| PR Review State Fetchprisma/orm | 48k | — | ~767 | Automated safety check: Pass | Apache-2.0 |
HKUDS/OpenHarness
Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.
cline/cline
Opens a GitHub pull request from your current branch with the gh CLI, after reviewing the commits and diff and gathering the details the PR needs.
openinterpreter/openinterpreter
Rewrites the title and body of one or more pull requests with gh, leading with why the change was made, then what changed, and describing only the net result.
jamiepine/voicebox
Writes or refreshes the Unreleased section of CHANGELOG.md as a themed narrative built from the commits, PRs and diff since the last version tag.
prisma/orm
Fetches a pull request's canonical review state as JSON, validates it, and renders markdown, a text summary and triage target files from it using bundled scripts.
tw93/Mole
Publishes curated, bilingual release notes for an existing Mole version tag with gh release edit, including contributor thanks and reactions, after the release workflow finishes.
foyzulkarim/claude-lens
File GitHub issues for the claude-lens project with the right shape for the work type — plan tasks from specs/claude-lens-plan.md, Phase 4 page tasks, spikes, bugs, enhancements, chores.
foyzulkarim/claude-lens
After /start-task: park the current clean, pushed feature branch in its own issue-numbered nested worktree (.worktrees/<issue) and return the primary checkout to current main, so the next parallel…
Categories
Retire a closed issue's working artifacts out of specs/ into the GitHub wiki — use when the user asks to archive a finished issue, empty out specs/ for a done task, or move an issue's…. Archive Issue is an agent skill from foyzulkarim/claude-lens. Retire a closed issue's working artifacts out of specs/ into the GitHub wiki — use when the user asks to archive a finished issue, empty out specs/ for a done task, or move an issue's requirements/architecture/review docs to the wiki.
Archive Issue fits situations like: the user asks to archive a finished issue; empty out specs/ for a done task; move an issues requirements/architecture/review docs to the wiki.
Run `npx skills add foyzulkarim/claude-lens --skill archive-issue -a claude-code`. Or copy the skill folder (.claude/skills/archive-issue in foyzulkarim/claude-lens) into .claude/skills/archive-issue in your project. Claude Code loads it when a task matches its description.
Run `npx skills add foyzulkarim/claude-lens --skill archive-issue -a codex`. Or copy the skill folder (.claude/skills/archive-issue in foyzulkarim/claude-lens) into .agents/skills/archive-issue in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add foyzulkarim/claude-lens --skill archive-issue -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/archive-issue, .gemini/skills/archive-issue, .github/skills/archive-issue and .opencode/skills/archive-issue in your project.
Going by SKILL.md and its folder, Archive Issue needs the command-line tools its instructions call (git and gh).
SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
Archive Issue is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Archive Issue: Contributor-First PR Merge (HKUDS/OpenHarness, 16k stars), Create Pull Request (cline/cline, 70k stars), Pull Request Title and Body Writer (openinterpreter/openinterpreter, 69k stars) and Draft Release Notes (jamiepine/voicebox, 57k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
foyzulkarim (a GitHub user) maintains it in foyzulkarim/claude-lens, which has 251 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on August 5, 2026.
Source: foyzulkarim/claude-lens on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.