arkon-edit
GitHub用于编辑知识库页面,支持贡献者提交草稿或编辑/管理员直接修改。涵盖权限分级、内容规则及草稿修订流程,确保变更经确认且符合规范。
Trigger Scenarios
Install
npx skills add nduckmink/arkon --skill arkon-edit -g -y
SKILL.md
Frontmatter
{
"name": "arkon-edit",
"description": "Propose or directly apply edits to Arkon wiki pages, including proposing brand new pages. Contributors create drafts for review; editors\/admins can edit\/create directly. Triggers on: update wiki, fix this page, propose edit, edit wiki page, correct the KB, improve wiki, resubmit my draft, withdraw my draft, create new wiki page, propose new page.",
"allowed-tools": "mcp__arkon__search_wiki mcp__arkon__read_wiki_index mcp__arkon__read_wiki_page mcp__arkon__propose_wiki_edit mcp__arkon__edit_wiki_page mcp__arkon__propose_wiki_create mcp__arkon__create_wiki_page mcp__arkon__resubmit_draft mcp__arkon__withdraw_draft"
}
arkon-edit: Edit the Knowledge Base
Always read the current page before proposing changes. Always confirm with the user before submitting.
Permission Tiers
| Role | Tool to use | Review required |
|---|---|---|
| Contributor | propose_wiki_edit |
Yes — goes to editor queue |
| Editor | edit_wiki_page |
No — writes directly |
| Admin | edit_wiki_page |
No — writes directly |
If you try edit_wiki_page and get a permission error, fall back to propose_wiki_edit.
Workflow: Propose an Edit (Contributor)
- Find the page —
search_wiki(query)orread_wiki_index()to locate the slug. - Read current content —
read_wiki_page(slug). Never propose without reading first. - Draft the edit — produce the full updated Markdown (not a diff — the tool takes full content).
- Confirm with user — show the diff or summary of changes. Get explicit approval.
- Submit —
propose_wiki_edit(slug, content_md, note="one-line explanation"). - Report the draft ID to the user so they can track it.
Do not submit a draft without user confirmation. The note field is important — editors need context.
Workflow: Direct Edit (Editor/Admin)
Same steps 1-4 above, then:
- Submit —
edit_wiki_page(slug, content_md, change_note="one-line explanation"). - Report the new version number returned.
Content Rules
- Submit full page content — these tools replace, not patch.
- Max 50,000 characters per submission.
- Cannot edit reserved pages:
_index,_log. - Preserve existing wikilinks
[[slug]]unless intentionally removing them. - Keep the page's existing frontmatter fields (title, type, knowledge_type_slugs, etc.) unless the change specifically needs to update them.
When NOT to edit
- Do not edit without user instruction — even if you spot an error while querying.
- Do not create new pages via these tools (they only update existing pages).
- If the target slug doesn't exist, tell the user — new page creation is an admin/pipeline operation.
Iteration loop: when a reviewer sends changes back
If a reviewer used request_changes_on_draft, the draft moves to status
needs_revision. The original draft is preserved; you (or the user) can fix
it without creating a fresh proposal.
read_wiki_page(slug)— make sure the page hasn't moved on while you waited.- Read the reviewer note attached to the draft (visible in the in-app notification). Address every point they raised.
- Confirm the rewrite with the user.
resubmit_draft(draft_id, content_md, note="what I changed in this round").- Bumps
revision_roundand notifies reviewers. - The prior submission is snapshotted to history (rounds) so the reviewer can diff your changes against the previous round.
- Bumps
Withdrawing your own draft
If you no longer want a pending or needs_revision draft to be reviewed:
withdraw_draft(draft_id)
Only the original author may withdraw (admins can override via the REST API). Withdrawn drafts are terminal and disappear from reviewer queues. Confirm with the user before withdrawing — it cannot be reversed via MCP.
Scope disambiguation
When propose_wiki_edit or edit_wiki_page finds the same slug in multiple
scopes (global + project, for example), the call fails with a list of the
candidate scopes. Re-call with scope_type and scope_id to target the
specific page the user means.
Creating a brand-new page
First check whether one already exists. Always run search_wiki(query)
and inspect the top hits before proposing a new page — duplicates waste
reviewer time and trigger the AI duplicate check.
| Role | Tool | What happens |
|---|---|---|
| Contributor+ | propose_wiki_create |
Draft enters reviewer queue; page materialised on approve |
Editor+ (workspace) or wiki:write:all (global) |
create_wiki_page |
Page created immediately |
Required fields for both tools:
slug— unique inside the chosen scope, no whitespace, not_index/_logtitle— display titlecontent_md— full Markdownpage_type— one ofentity|concept|source|topicscope_type—global|department|project(withscope_idfor the latter two)knowledge_type_slugs— taxonomy tags that drive RBAC visibility; ask the user which categories apply rather than guessing
Workflow:
search_wikito confirm nothing similar exists.- Show the user the suggested slug, page_type, knowledge_type_slugs, scope and the full content. Confirm.
- Call the appropriate tool. Report the returned draft ID (propose path) or the created page version (direct path).
If approve later returns a slug conflict, the reviewer or the contributor must
override final_slug (reviewer side) or rename and resubmit (contributor side).
AI pre-review
Every draft you submit is annotated by an AI pre-review layer that flags:
- PII / secrets (emails, phone numbers, API keys, JWTs, ...)
- Broken wikilinks to slugs that don't exist
- Possible duplicates with existing pages (embedding similarity)
- Tone / scope fit / factual concerns (LLM judgment)
The flags are advisory only — they do not block submission and reviewers make the final call. But: address obvious ones (broken links, accidental PII) before submitting to save the reviewer time.
If a regex flags a legitimate contact email or hotline that you intentionally included in the page, add a suppression comment on the line above:
<!-- pii-allow: contact-email -->
Email team: compliance@example.com
The marker covers regex matches on the same or next non-blank line. Choose a short, honest reason — it shows up in the reviewer's audit trail.
Version History
- 5e4069d Current 2026-07-24 16:10


