소스 정보
- 저장소
- manti-by/demetra
- 최근 소스 활동
- 2026년 8월 20일 11:52
- 감지된 SKILL.md 언어
- 영어
- 스타
- 5
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/manti-by/demetra --skill archive-old-wiki-pages명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
| name | Archive old wiki pages |
| description | Archive old wiki pages (default > 3 months) by extracting any |
You are the OpenWiki Archive Agent. Read wiki/README.md and wiki/TEMPLATE.md
for conventions, then work through every page under wiki/pages/.
Pages are session-scoped — once a session is old enough that the detailed
narrative is no longer the freshest source of truth, distil whatever is still
useful (decisions, conventions, stable patterns, external refs) into the most
relevant current page, then retire the original to wiki/archive/ so the
active wiki/pages/ stays focused on recent sessions.
The default age threshold is 3 months (compare each page's date: against
date +%F today). If the user invokes this command with an explicit age
(e.g. /wiki-archive 6mo), respect that override — accept any duration the
user names (3mo, 90d, 6 months, 1y, …).
.md file in wiki/pages/. Parse the
frontmatter of each — you need date (the session date), status,
type, services, tickets, tags, and related at minimum.date is older than the
threshold. Pages without a parseable date are NOT candidates — log them
in the report and skip (do not guess; bad data must surface, not be
silently archived).status: open or status: in-progress
are NOT candidates — they are still being actively worked on, and
archiving them would hide live state. Skip them and note them in the
report under "needs human review".## Follow-ups
section with any non-trivial entry (anything other than - None), skip
the page. Live follow-ups must not be silently retired — leave the page
in wiki/pages/ and surface it in the report under "needs human review".The three skip categories in this step are reported separately — never lump them together.
For each remaining candidate:
Read it in full. Frontmatter and complete body. Note the TL;DR, the
page's services / tickets / tags, and the topic (from the body, not
just the frontmatter tags).
Identify the durable content. Carry forward only:
Do NOT carry forward:
session_id cross-references) — these age out by design.Find the target page. Search wiki/pages/ for the page that
currently owns the same topic — the most recent page on the same
subsystem / service / tag set, with overlapping services or tags
in frontmatter, or an explicit related: link to the candidate. Pick
a single best target when one clearly dominates; otherwise pick a small
set (2–3) of equally good targets and merge into all of them.
If there is no good target (the candidate is a true one-off, or its useful info is already fully covered by a newer page), record the candidate in the report as "no target — archive without merge" and proceed directly to step 5 (no merge, just move).
For each (candidate, target) pair:
Insert into the target. Add a new body section to the target page,
inserted immediately before the target's ## Follow-ups section,
with the heading:
## Source — [[<candidate-filename-without-.md>]]
Under that heading, copy the useful info distilled in step 2. Quote short snippets verbatim; paraphrase long passages. Whenever you carry a decision or convention forward, attribute it inline: "Originally decided in [[<candidate-filename-without-.md>]] on YYYY-MM-DD" — the date lets the reader judge the source's recency.
Update target frontmatter.
related: list
(and tickets:, tags:, services: — union, deduped, no
reordering).date, session_id, title, or
status.Update the candidate's related: list (now). For every other
page in wiki/pages/ that currently lists the candidate in its
related: frontmatter (the target, plus any sibling you noticed in
step 2.3), rewrite the entry to point at the target. Do this now
— step 5 will delete the candidate file and dangling references must
be gone by then.
Body [[...]] cross-links. For each surviving page in
wiki/pages/ that has a body [[candidate-filename-without-.md]]
link, rewrite it to [[target-filename-without-.md]]. Mirror the
change in that page's related: frontmatter so the two stay in sync.
If the candidate was archived without merge, drop the link and the
related: entry instead.
Update wiki/QUESTIONS.md references. Scan wiki/QUESTIONS.md
for **Pages:** fields listing the candidate. For a candidate that
was merged, rewrite the reference to the merge target. For a
candidate archived without merge, rewrite it to a resolvable archive
reference (wiki/archive/<candidate-filename-without-.md>) so the
question keeps pointing at the content. Do this now — alongside the
related-list and body-link updates above — so no dangling question
reference survives step 5.
Process each candidate independently — a single candidate may merge into
multiple targets, and a single target may absorb multiple candidates.
Never chain candidates: every merge must land on a page that will
remain in wiki/pages/ (i.e. is not itself a candidate in this run).
If you find yourself wanting to merge A into B and B is also a candidate,
stop — promote B's content into a third (non-candidate) page first, or
defer A to the next run.
mkdir -p wiki/archive.wiki/pages/<name>.md to
wiki/archive/<name>.md using git mv (so git tracks the rename
rather than a delete + add). If the destination already exists
(collision with a previous archive), append a -2, -3, … suffix
until the path is free; record the rename in the report.wiki/.openwiki-sessions.json. For each archived candidate,
if the session-id → filename mapping points at the candidate, redirect
it to the target page (or remove the entry if archived without merge).
Leave any other-session-id mapping that happens to point at the
candidate alone — wiki-update cleans those on its next write.Reconcile wiki/INDEX.md:
## Pages: remove every archived page's entry. Do not reorder the
rest — keep newest-first order intact. If a target's title or summary
materially changed (rare — only when a merge actually changed what the
page is about), note it for the consistency agent to revisit on its
next run.## By topic: drop archived pages from their clusters. If a cluster
loses its last page, remove the cluster heading entirely.## Archive section — the consistency agent
maintains the archive catalog, not this command. wiki/archive/
existing on disk is the source of truth.Print a short summary at the end:
End with a one-line verdict: N archived, M skipped, K needs-human-review.
Stamp a "moved to" note on the candidate (only when a merge happened). Just below the candidate's H1, prepend:
> **Archived on YYYY-MM-DD.** Useful info merged into
> [[<target-1-filename-without-.md>]] and
> [[<target-2-filename-without-.md>]]. See wiki/archive/ for the
> original.
List every merge target — one [[...]] link per target, joined
with "and" (a candidate may merge into 2–3 targets, step 2.3). Use
today's date. Skip this note if the candidate was archived without
merge (step 2.3).