11729dd47SHenrik Yllemo# SkillForge for DokuWiki 21729dd47SHenrik Yllemo 3*53b25e83SHenrik Yllemo**SkillForge** is a powerful DokuWiki plugin that exports entire namespaces as AI-ready Markdown packages. 41729dd47SHenrik Yllemo 51729dd47SHenrik YllemoIt creates a downloadable ZIP package with a `SKILL.md` entry file, converted Markdown pages, an `index.md` file, a machine-readable `skill.json` manifest and optional media files. 61729dd47SHenrik Yllemo 71729dd47SHenrik YllemoThe package is designed to work well with Anthropic-style `SKILL.md` workflows while remaining useful as a plain Markdown knowledge package for GitHub, Obsidian, MkDocs, AIWiki and similar tools. 81729dd47SHenrik Yllemo 91729dd47SHenrik Yllemo## Features 101729dd47SHenrik Yllemo 111729dd47SHenrik Yllemo- Select a DokuWiki namespace from a dropdown in the admin interface 121729dd47SHenrik Yllemo- Use a configured source page, default `start.txt`, as `SKILL.md` 131729dd47SHenrik Yllemo- Convert DokuWiki `.txt` pages to Markdown `.md` 141729dd47SHenrik Yllemo- Generate YAML frontmatter for exported pages 151729dd47SHenrik Yllemo- Generate `index.md` 161729dd47SHenrik Yllemo- Generate `skill.json` 171729dd47SHenrik Yllemo- Include media files from the matching media namespace 181729dd47SHenrik Yllemo- Create ZIP files without requiring PHP `ZipArchive` 191729dd47SHenrik Yllemo- Download through a dedicated DokuWiki action to avoid admin-page redirects 201729dd47SHenrik Yllemo- Show formatted metadata and a ZIP download button on skill source pages 211729dd47SHenrik Yllemo 221729dd47SHenrik Yllemo## Example output 231729dd47SHenrik Yllemo 241729dd47SHenrik Yllemo```text 251729dd47SHenrik Yllemoskilltest-skill/ 261729dd47SHenrik Yllemo├── SKILL.md 271729dd47SHenrik Yllemo├── index.md 281729dd47SHenrik Yllemo├── skill.json 291729dd47SHenrik Yllemo├── examples.md 301729dd47SHenrik Yllemo├── checklist.md 311729dd47SHenrik Yllemo└── media/ 321729dd47SHenrik Yllemo``` 331729dd47SHenrik Yllemo 341729dd47SHenrik Yllemo## Installation 351729dd47SHenrik Yllemo 361729dd47SHenrik YllemoCopy the `skillforge` folder into your DokuWiki plugin directory: 371729dd47SHenrik Yllemo 381729dd47SHenrik Yllemo```text 391729dd47SHenrik Yllemolib/plugins/skillforge 401729dd47SHenrik Yllemo``` 411729dd47SHenrik Yllemo 421729dd47SHenrik YllemoThen open DokuWiki admin: 431729dd47SHenrik Yllemo 441729dd47SHenrik Yllemo```text 451729dd47SHenrik YllemoAdmin → SkillForge 461729dd47SHenrik Yllemo``` 471729dd47SHenrik Yllemo 481729dd47SHenrik Yllemo## Configuration 491729dd47SHenrik Yllemo 50*53b25e83SHenrik YllemoSkillForge settings are available through DokuWiki's configuration manager. All settings have sensible defaults and work out of the box. 511729dd47SHenrik Yllemo 521729dd47SHenrik Yllemo| Setting | Default | Description | 531729dd47SHenrik Yllemo|---|---:|---| 541729dd47SHenrik Yllemo| `default_skill_source` | `start.txt` | Page inside the selected namespace used to generate `SKILL.md` | 551729dd47SHenrik Yllemo| `output_skill_filename` | `SKILL.md` | Name of the generated skill entry file | 561729dd47SHenrik Yllemo| `recursive` | `on` | Include subnamespaces | 571729dd47SHenrik Yllemo| `include_media` | `on` | Include files from the matching media namespace | 581729dd47SHenrik Yllemo| `generate_index` | `on` | Generate `index.md` | 591729dd47SHenrik Yllemo| `zip_filename_pattern` | `{namespace}-skill-{date}.zip` | ZIP filename pattern | 601729dd47SHenrik Yllemo| `show_rendered_metadata` | `on` | Show formatted YAML metadata where `<frontmatter>` or `<skillmeta>` is used | 611729dd47SHenrik Yllemo| `show_page_download_button` | `on` | Show an admin-only ZIP download button beside rendered skill metadata | 621729dd47SHenrik Yllemo| `download_button_label` | `Download SKILL.md (.zip)` | Text for the page download button | 631729dd47SHenrik Yllemo 641729dd47SHenrik Yllemo## Metadata 651729dd47SHenrik Yllemo 661729dd47SHenrik YllemoAdd metadata to the configured source page, usually `start.txt`: 671729dd47SHenrik Yllemo 681729dd47SHenrik Yllemo```text 691729dd47SHenrik Yllemo<frontmatter> 701729dd47SHenrik Yllemoname: ai-prompting 711729dd47SHenrik Yllemodescription: Helps an AI assistant work with prompting knowledge. 721729dd47SHenrik Yllemoversion: 1.0.0 731729dd47SHenrik Yllemoauthor: Henrik Yllemo 741729dd47SHenrik Yllemotags: 751729dd47SHenrik Yllemo - ai 761729dd47SHenrik Yllemo - prompting 771729dd47SHenrik Yllemo - dokuwiki 781729dd47SHenrik Yllemo</frontmatter> 791729dd47SHenrik Yllemo``` 801729dd47SHenrik Yllemo 811729dd47SHenrik Yllemo`<skillmeta>` is also supported for backward compatibility. 821729dd47SHenrik Yllemo 831729dd47SHenrik YllemoThe metadata is written as YAML frontmatter at the top of `SKILL.md`. 841729dd47SHenrik YllemoIn DokuWiki page rendering, the metadata block is shown as a formatted metadata panel instead of raw YAML. This can be disabled with `show_rendered_metadata`. 851729dd47SHenrik Yllemo 861729dd47SHenrik YllemoWhen `show_page_download_button` is enabled, admins also get a **Download skill ZIP** button on pages containing a metadata block. The button creates a fresh export for that page's namespace and uses the current page as the `SKILL.md` source. 871729dd47SHenrik YllemoThe button text can be changed with `download_button_label`. It supports `{name}`, `{title}`, `{description}` and `{output}`, so a label like `Download {name} (.zip)` can use YAML frontmatter values. 881729dd47SHenrik Yllemo 891729dd47SHenrik Yllemo## Export flow 901729dd47SHenrik Yllemo 911729dd47SHenrik Yllemo1. Open `Admin → SkillForge`. 921729dd47SHenrik Yllemo2. Select a namespace. 931729dd47SHenrik Yllemo3. Choose whether to include subnamespaces and media. 941729dd47SHenrik Yllemo4. Click **Forge Package**. 951729dd47SHenrik Yllemo5. Download the generated ZIP file. 961729dd47SHenrik Yllemo 971729dd47SHenrik Yllemo## ZIP support 981729dd47SHenrik Yllemo 991729dd47SHenrik YllemoSkillForge includes a small internal ZIP writer using the ZIP STORE method. It does not require PHP `ZipArchive` and does not depend on `inc/pclzip.lib.php`. 1001729dd47SHenrik Yllemo 1011729dd47SHenrik YllemoThis is useful for lightweight DokuWiki installations such as DokuWiki-on-a-Stick with MicroApache. 1021729dd47SHenrik Yllemo 1031729dd47SHenrik Yllemo## Markdown conversion 1041729dd47SHenrik Yllemo 1051729dd47SHenrik YllemoThe current converter handles common DokuWiki syntax: 1061729dd47SHenrik Yllemo 1071729dd47SHenrik Yllemo- Headings 1081729dd47SHenrik Yllemo- Internal links 1091729dd47SHenrik Yllemo- External links 1101729dd47SHenrik Yllemo- Images/media references 1111729dd47SHenrik Yllemo- Code/file blocks 1121729dd47SHenrik Yllemo- Bold and italic text 1131729dd47SHenrik Yllemo- Frontmatter blocks 1141729dd47SHenrik Yllemo 1151729dd47SHenrik YllemoAdvanced DokuWiki syntax can be added incrementally. 1161729dd47SHenrik Yllemo 1171729dd47SHenrik Yllemo## Files generated 1181729dd47SHenrik Yllemo 1191729dd47SHenrik Yllemo| File | Purpose | 1201729dd47SHenrik Yllemo|---|---| 1211729dd47SHenrik Yllemo| `SKILL.md` | Main AI skill instruction file | 1221729dd47SHenrik Yllemo| `index.md` | Human-readable file index | 1231729dd47SHenrik Yllemo| `skill.json` | Machine-readable package manifest | 1241729dd47SHenrik Yllemo| `*.md` | Converted namespace pages | 1251729dd47SHenrik Yllemo| `media/` | Optional exported media files | 1261729dd47SHenrik Yllemo 1271729dd47SHenrik Yllemo## Development notes 1281729dd47SHenrik Yllemo 1291729dd47SHenrik YllemoThis release focuses on a practical, dependency-light export workflow. The next natural improvements are stronger link rewriting, richer media handling, validation and optional export profiles. 1301729dd47SHenrik Yllemo 1311729dd47SHenrik Yllemo## License 1321729dd47SHenrik Yllemo 1331729dd47SHenrik YllemoMIT 134