xref: /plugin/skillforge/README.md (revision 53b25e833795c7454617e499b25a3e6095e94698)
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