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