Minimal nestable wiki — a folder + index.md, for any use case (notes, research, recipes, writing, team docs). Spec, conventions catalog, and reference skills.
Project description
wiki-spaces
A wiki is a folder with index.md. That's the spec. Inside, anything goes: files, plain folders, or other spaces (folders that themselves carry index.md) — recursively. Zero contained spaces is a fine wiki. Deep nesting is too. Your shape is your call.
Use it for whatever you want — research notes, writing drafts, recipes, project knowledge, a personal life wiki, a team reference. The spec is shape-agnostic; conventions are opt-in. wiki-update places new content by reading index.md's ## Spaces / ## Items entries; wiki-search and wiki-tend operate against whatever shape the wiki has, with filesystem-glob fallbacks when the curated map is absent — see CONVENTIONS.md / Categorical layout.
Three tiers of opt-in: stop at the floor (index.md only), grow into navigable (## Items + ## Spaces so the wiki maps itself), or fully managed (the CONVENTIONS.md catalog — taxonomy, logging, frontmatter, etc.). Each tier adds capability and a small contract; tools degrade gracefully where you haven't opted in.
wiki-spaces ships:
- The spec (
AGENTS.md) — what counts as a wiki. - The conventions catalog (
CONVENTIONS.md) — opt-in markers tools detect. - Three reference skills AI agents use to work with your wiki:
wiki-search— find contentwiki-update— capture / save / sync new contentwiki-tend— audit, normalize tags, cross-link, colorize
One canonical wiki per user, located via ~/.config/wiki-spaces/config. Plain markdown, Obsidian-flavored, version-controllable.
Just start (no install)
The spec is a folder + index.md. If you don't need the reference skills yet, that's the whole setup:
mkdir -p ~/Wiki
echo "# My Wiki" > ~/Wiki/index.md
mkdir -p ~/.config/wiki-spaces
printf 'wiki = %s/Wiki\n' "$HOME" > ~/.config/wiki-spaces/config
Start adding files. You now have a Tier 1 wiki. Install the skills later (steps below); they'll discover the wiki via the config you just wrote.
Setup (with the reference skills)
Paste this to your AI agent (recommended)
Install and set up wiki-spaces for me by following the instructions here:
https://raw.githubusercontent.com/anfreire/wiki-spaces/main/references/SETUP.md
The agent fetches the briefing, asks what your wiki is for, picks tailored defaults, runs the install / scaffold / config writes, and confirms when done.
For LLM agents (non-interactive)
curl -s https://raw.githubusercontent.com/anfreire/wiki-spaces/main/references/SETUP.md
For humans (manual)
uv is strongly recommended (handles Python provisioning + on-demand runs). Run on demand with no install:
uvx wiki-spaces install # detected harnesses; add --all to cover every supported one
uvx wiki-spaces init ~/Wiki --git # bare wiki at ~/Wiki; --with adds files, --folders adds dirs (see below)
uvx wiki-spaces doctor --no-net
Or install permanently and drop the uvx prefix:
uv tool install wiki-spaces
wiki-spaces install
wiki-spaces init ~/Wiki --git # bare wiki; --with / --folders see below
wiki-spaces doctor --no-net
No uv? Plain pip works too:
pip install --user wiki-spaces # or pipx install wiki-spaces
wiki-spaces install
wiki-spaces init ~/Wiki --git # bare wiki; --with / --folders see below
wiki-spaces doctor --no-net
init --with accepts log.md, _meta/taxonomy.md, .manifest.json, _template.md, hot.md — opt-in conventions from CONVENTIONS.md. --folders <names...> creates top-level categorical directories — --folders concepts entities projects for a developer notebook, --folders recipes ingredients techniques for a recipe collection, --folders drafts characters worldbuilding for a writing project, and so on (see references/EXAMPLES.md for full shape examples). For nothing extra, leave both flags off; index.md is the only required file.
After setup, your skills know everything via ${XDG_CONFIG_HOME:-~/.config}/wiki-spaces/config (two keys: wiki and repo). Invoke wiki-search, wiki-update, wiki-tend from anywhere.
For Cursor / Windsurf / GitHub Copilot / Aider (no skills concept), see references/HARNESS_INTEGRATION.md.
Working from a source checkout (dev)
git clone https://github.com/anfreire/wiki-spaces.git ~/src/wiki-spaces
~/src/wiki-spaces/scripts/install.py # same as `wiki-spaces install` but reads from the checkout
~/src/wiki-spaces/scripts/init_wiki.py ~/Wiki --git
~/src/wiki-spaces/scripts/doctor.py --no-net
The scripts/*.py shims are PEP 723 entries that forward to the wiki_spaces package — same code path as uvx wiki-spaces, just sourced from the local clone instead of PyPI.
How it works
| Discovery | Skills read ~/.config/wiki-spaces/config for the wiki path. CWD is a placement hint, never the discovery mechanism. |
| Conventions | Obsidian-flavored: wikilinks, frontmatter, tags, Bases, .obsidian/ graph integration. All optional per space; presence-detected. |
| Spaces | Recursive (folders with their own index.md). Each is autonomous: own log, own taxonomy, own conventions. Shared/team spaces typically mount as git submodules under shared/. |
| Trust scope | Tools distinguish owned spaces (yours) from external mounts (under shared/, foreign submodules, out-of-tree symlinks). Reads cross owned spaces by default; writes stay in the targeted space; external mounts require explicit opt-in. |
Read more
AGENTS.md— the spec. One page.CONVENTIONS.md— opt-in conventions catalog.references/— agent-facing setup, examples, and mounting playbooks.skills/— the three reference skills.
Dependencies
- Python
>=3.11— the package's only hard runtime dep. uv— strongly recommended. Runsuvx wiki-spacesephemerally,uv tool install wiki-spacespermanently, and provisions Python automatically. Plainpip install wiki-spaces(orpipx) works as a fallback if you can't / won't use uv.git— optional. Recommended for backing up / sharing your wiki and for the dev-from-source flow.kepano/obsidian-skills—obsidian-markdownandobsidian-basesare vendored undervendor/kepano/(shallow clone + sparse copy, pinned by SHA) and ship inside the wheel. The reference skills defer toobsidian-markdownfor wikilink / frontmatter / callout / embed syntax.obsidian-basesis vendored for future.baseview tooling; no current procedure uses it.
Sharing wikis
Shared / collaborative spaces are best handled as git repositories embedded in your canonical wiki via submodules. Push access on the remote is the de facto write-permission layer. See CONVENTIONS.md / Sharing & permissions and references/MOUNT.md.
For local-only or private use, no git needed.
Prior art
This project stands on three pieces of earlier work:
- Andrej Karpathy's "LLM Wiki" gist (gist) — the original idea: compile knowledge once into interconnected markdown files maintained by an LLM, instead of re-asking or re-RAG-ing.
- Ar9av/obsidian-wiki — a broader framework implementing the LLM Wiki pattern with ~30 skills across many AI coding harnesses. wiki-spaces extracts a smaller spec, commits to a single canonical wiki, and adds nestability for shared content.
- kepano — Obsidian's lead designer, whose
obsidian-skillsare vendored as the syntax base.
The AGENTS.md standard is used for the root agent-instruction file, with symlinks for harnesses that prefer their own filename.
License
MIT. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wiki_spaces-0.1.0.tar.gz.
File metadata
- Download URL: wiki_spaces-0.1.0.tar.gz
- Upload date:
- Size: 53.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1694a9c14de74753336b35153f877ced4ccd590767ada419e317f4f3b0079f25
|
|
| MD5 |
d46a4796a1fdedc6a1f6b07130ac2edd
|
|
| BLAKE2b-256 |
c24ca4513fb81907843deb8de01903853bb0260b59cd190e09be01fa926dd145
|
Provenance
The following attestation bundles were made for wiki_spaces-0.1.0.tar.gz:
Publisher:
release.yml on anfreire/wiki-spaces
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wiki_spaces-0.1.0.tar.gz -
Subject digest:
1694a9c14de74753336b35153f877ced4ccd590767ada419e317f4f3b0079f25 - Sigstore transparency entry: 1543425262
- Sigstore integration time:
-
Permalink:
anfreire/wiki-spaces@cad9fde016197238e1ad1a8afd01a494a6e87b6b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/anfreire
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cad9fde016197238e1ad1a8afd01a494a6e87b6b -
Trigger Event:
push
-
Statement type:
File details
Details for the file wiki_spaces-0.1.0-py3-none-any.whl.
File metadata
- Download URL: wiki_spaces-0.1.0-py3-none-any.whl
- Upload date:
- Size: 71.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c42d785fe2f81463161fe7b07f63b5c1a845525e5515bb7878063003ac7546c9
|
|
| MD5 |
ed3d6e1789a7acbe9ea5aa7af712b48f
|
|
| BLAKE2b-256 |
0803a2fbc48de04042dad04fafc65d7a23298712b3433d0a91f153cef5ae8249
|
Provenance
The following attestation bundles were made for wiki_spaces-0.1.0-py3-none-any.whl:
Publisher:
release.yml on anfreire/wiki-spaces
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wiki_spaces-0.1.0-py3-none-any.whl -
Subject digest:
c42d785fe2f81463161fe7b07f63b5c1a845525e5515bb7878063003ac7546c9 - Sigstore transparency entry: 1543425406
- Sigstore integration time:
-
Permalink:
anfreire/wiki-spaces@cad9fde016197238e1ad1a8afd01a494a6e87b6b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/anfreire
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cad9fde016197238e1ad1a8afd01a494a6e87b6b -
Trigger Event:
push
-
Statement type: