1*1729dd47SHenrik Yllemo# SkillForge for DokuWiki 2*1729dd47SHenrik Yllemo 3*1729dd47SHenrik YllemoSkillForge is a DokuWiki plugin that exports an entire namespace as an AI-ready Markdown package. 4*1729dd47SHenrik Yllemo 5*1729dd47SHenrik 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. 6*1729dd47SHenrik Yllemo 7*1729dd47SHenrik 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. 8*1729dd47SHenrik Yllemo 9*1729dd47SHenrik Yllemo## Features 10*1729dd47SHenrik Yllemo 11*1729dd47SHenrik Yllemo- Select a DokuWiki namespace from a dropdown in the admin interface 12*1729dd47SHenrik Yllemo- Use a configured source page, default `start.txt`, as `SKILL.md` 13*1729dd47SHenrik Yllemo- Convert DokuWiki `.txt` pages to Markdown `.md` 14*1729dd47SHenrik Yllemo- Generate YAML frontmatter for exported pages 15*1729dd47SHenrik Yllemo- Generate `index.md` 16*1729dd47SHenrik Yllemo- Generate `skill.json` 17*1729dd47SHenrik Yllemo- Include media files from the matching media namespace 18*1729dd47SHenrik Yllemo- Create ZIP files without requiring PHP `ZipArchive` 19*1729dd47SHenrik Yllemo- Download through a dedicated DokuWiki action to avoid admin-page redirects 20*1729dd47SHenrik Yllemo- Show formatted metadata and a ZIP download button on skill source pages 21*1729dd47SHenrik Yllemo 22*1729dd47SHenrik Yllemo## Example output 23*1729dd47SHenrik Yllemo 24*1729dd47SHenrik Yllemo```text 25*1729dd47SHenrik Yllemoskilltest-skill/ 26*1729dd47SHenrik Yllemo├── SKILL.md 27*1729dd47SHenrik Yllemo├── index.md 28*1729dd47SHenrik Yllemo├── skill.json 29*1729dd47SHenrik Yllemo├── examples.md 30*1729dd47SHenrik Yllemo├── checklist.md 31*1729dd47SHenrik Yllemo└── media/ 32*1729dd47SHenrik Yllemo``` 33*1729dd47SHenrik Yllemo 34*1729dd47SHenrik Yllemo## Installation 35*1729dd47SHenrik Yllemo 36*1729dd47SHenrik YllemoCopy the `skillforge` folder into your DokuWiki plugin directory: 37*1729dd47SHenrik Yllemo 38*1729dd47SHenrik Yllemo```text 39*1729dd47SHenrik Yllemolib/plugins/skillforge 40*1729dd47SHenrik Yllemo``` 41*1729dd47SHenrik Yllemo 42*1729dd47SHenrik YllemoThen open DokuWiki admin: 43*1729dd47SHenrik Yllemo 44*1729dd47SHenrik Yllemo```text 45*1729dd47SHenrik YllemoAdmin → SkillForge 46*1729dd47SHenrik Yllemo``` 47*1729dd47SHenrik Yllemo 48*1729dd47SHenrik Yllemo## Configuration 49*1729dd47SHenrik Yllemo 50*1729dd47SHenrik YllemoSkillForge settings are available through DokuWiki's configuration manager. 51*1729dd47SHenrik Yllemo 52*1729dd47SHenrik Yllemo| Setting | Default | Description | 53*1729dd47SHenrik Yllemo|---|---:|---| 54*1729dd47SHenrik Yllemo| `default_skill_source` | `start.txt` | Page inside the selected namespace used to generate `SKILL.md` | 55*1729dd47SHenrik Yllemo| `output_skill_filename` | `SKILL.md` | Name of the generated skill entry file | 56*1729dd47SHenrik Yllemo| `recursive` | `on` | Include subnamespaces | 57*1729dd47SHenrik Yllemo| `include_media` | `on` | Include files from the matching media namespace | 58*1729dd47SHenrik Yllemo| `generate_index` | `on` | Generate `index.md` | 59*1729dd47SHenrik Yllemo| `zip_filename_pattern` | `{namespace}-skill-{date}.zip` | ZIP filename pattern | 60*1729dd47SHenrik Yllemo| `show_rendered_metadata` | `on` | Show formatted YAML metadata where `<frontmatter>` or `<skillmeta>` is used | 61*1729dd47SHenrik Yllemo| `show_page_download_button` | `on` | Show an admin-only ZIP download button beside rendered skill metadata | 62*1729dd47SHenrik Yllemo| `download_button_label` | `Download SKILL.md (.zip)` | Text for the page download button | 63*1729dd47SHenrik Yllemo 64*1729dd47SHenrik Yllemo## Metadata 65*1729dd47SHenrik Yllemo 66*1729dd47SHenrik YllemoAdd metadata to the configured source page, usually `start.txt`: 67*1729dd47SHenrik Yllemo 68*1729dd47SHenrik Yllemo```text 69*1729dd47SHenrik Yllemo<frontmatter> 70*1729dd47SHenrik Yllemoname: ai-prompting 71*1729dd47SHenrik Yllemodescription: Helps an AI assistant work with prompting knowledge. 72*1729dd47SHenrik Yllemoversion: 1.0.0 73*1729dd47SHenrik Yllemoauthor: Henrik Yllemo 74*1729dd47SHenrik Yllemotags: 75*1729dd47SHenrik Yllemo - ai 76*1729dd47SHenrik Yllemo - prompting 77*1729dd47SHenrik Yllemo - dokuwiki 78*1729dd47SHenrik Yllemo</frontmatter> 79*1729dd47SHenrik Yllemo``` 80*1729dd47SHenrik Yllemo 81*1729dd47SHenrik Yllemo`<skillmeta>` is also supported for backward compatibility. 82*1729dd47SHenrik Yllemo 83*1729dd47SHenrik YllemoThe metadata is written as YAML frontmatter at the top of `SKILL.md`. 84*1729dd47SHenrik 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`. 85*1729dd47SHenrik Yllemo 86*1729dd47SHenrik 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. 87*1729dd47SHenrik 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. 88*1729dd47SHenrik Yllemo 89*1729dd47SHenrik Yllemo## Export flow 90*1729dd47SHenrik Yllemo 91*1729dd47SHenrik Yllemo1. Open `Admin → SkillForge`. 92*1729dd47SHenrik Yllemo2. Select a namespace. 93*1729dd47SHenrik Yllemo3. Choose whether to include subnamespaces and media. 94*1729dd47SHenrik Yllemo4. Click **Forge Package**. 95*1729dd47SHenrik Yllemo5. Download the generated ZIP file. 96*1729dd47SHenrik Yllemo 97*1729dd47SHenrik Yllemo## ZIP support 98*1729dd47SHenrik Yllemo 99*1729dd47SHenrik 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`. 100*1729dd47SHenrik Yllemo 101*1729dd47SHenrik YllemoThis is useful for lightweight DokuWiki installations such as DokuWiki-on-a-Stick with MicroApache. 102*1729dd47SHenrik Yllemo 103*1729dd47SHenrik Yllemo## Markdown conversion 104*1729dd47SHenrik Yllemo 105*1729dd47SHenrik YllemoThe current converter handles common DokuWiki syntax: 106*1729dd47SHenrik Yllemo 107*1729dd47SHenrik Yllemo- Headings 108*1729dd47SHenrik Yllemo- Internal links 109*1729dd47SHenrik Yllemo- External links 110*1729dd47SHenrik Yllemo- Images/media references 111*1729dd47SHenrik Yllemo- Code/file blocks 112*1729dd47SHenrik Yllemo- Bold and italic text 113*1729dd47SHenrik Yllemo- Frontmatter blocks 114*1729dd47SHenrik Yllemo 115*1729dd47SHenrik YllemoAdvanced DokuWiki syntax can be added incrementally. 116*1729dd47SHenrik Yllemo 117*1729dd47SHenrik Yllemo## Files generated 118*1729dd47SHenrik Yllemo 119*1729dd47SHenrik Yllemo| File | Purpose | 120*1729dd47SHenrik Yllemo|---|---| 121*1729dd47SHenrik Yllemo| `SKILL.md` | Main AI skill instruction file | 122*1729dd47SHenrik Yllemo| `index.md` | Human-readable file index | 123*1729dd47SHenrik Yllemo| `skill.json` | Machine-readable package manifest | 124*1729dd47SHenrik Yllemo| `*.md` | Converted namespace pages | 125*1729dd47SHenrik Yllemo| `media/` | Optional exported media files | 126*1729dd47SHenrik Yllemo 127*1729dd47SHenrik Yllemo## Development notes 128*1729dd47SHenrik Yllemo 129*1729dd47SHenrik 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. 130*1729dd47SHenrik Yllemo 131*1729dd47SHenrik Yllemo## License 132*1729dd47SHenrik Yllemo 133*1729dd47SHenrik YllemoMIT 134