Metadata-Version: 2.5
Name: olakit
Version: 0.1.0
Summary: Object / Link / Action ontology kit: YAML model, Mermaid/Turtle export, live viewer, agent CLI.
Project-URL: Homepage, https://github.com/ken3yang/olakit
Project-URL: Repository, https://github.com/ken3yang/olakit
Author: olakit
License: MIT
License-File: LICENSE
Keywords: action,link,mermaid,object,ontology,viewer
Requires-Python: >=3.10
Requires-Dist: pyyaml>=6
Description-Content-Type: text/markdown

# olakit

**Object / Link / Action** ontology kit.

Write a domain model in YAML. Render it to Mermaid or RDF Turtle. Explore
it live as a neighborhood Map, a 2D force graph, or a 3D galaxy. Drive the
viewer from an agent CLI.

The YAML file is the only model. Derived files are output, never a second
source of truth.

## Install

```bash
# isolated, no install
uvx --from git+https://github.com/ken3yang/olakit olakit --help

# local checkout
uvx --from /path/to/olakit olakit --help

# or install (once a release is on PyPI)
pip install olakit
uvx olakit --help
```

## Release

Publishing is the GitHub Action `.github/workflows/publish.yml`. It builds
with `uv` and uploads using the `PYPI_API_TOKEN` repo secret.

1. Bump `version` in `pyproject.toml` (and `src/olakit/__init__.py`).
2. Commit, then tag and push:

```bash
git tag v0.1.0
git push origin v0.1.0
```

A matching `v*` tag starts the publish job. You can also run **Publish**
from the Actions tab (`workflow_dispatch`). Already-uploaded versions are
skipped.

Paths default to the **current working directory** (or `$OLAKIT_INPUT`),
not the package install path. That is what makes `uvx` safe: it never
looks next to its own cached wheel for your `ontology.yaml`.

## Commands

```bash
olakit render -i ontology.yaml          # → docs/ontology.mmd
olakit turtle -i ontology.yaml          # → docs/ontology.ttl
olakit view   -i ontology.yaml --open   # live explorer on :8765

# with the viewer running
olakit status
olakit mode galaxy          # map | graph | galaxy
olakit hops 3               # 1..8
olakit actions on
olakit filter --context People,Work
olakit select Task
```

Try the bundled demo:

```bash
olakit view -i examples/todo/ontology.yaml --open
```

## Schema

`ontology.yaml` is three lists:

| Kind     | Role |
|----------|------|
| **Object** | A noun (type). `id`, `label`, `description`, optional `properties`, `tags`, `context`. |
| **Link**   | A structural relation. `from` / `to` object ids, `cardinality`, `directed`. |
| **Action** | A verb. Optional `actor`, `objects[]` it touches, `links[]` it uses. |

`context` is the bounded-context cluster used by Mermaid subgraphs and
the viewer filter chips. `tags` stay as badges. Optional
`meta.context_order` pins chip order; otherwise first-seen wins.

See `examples/todo/ontology.yaml` for a complete file.

## Agent skill

Copy `skills/olakit/SKILL.md` into your agent's skill directory
(`.agents/skills/olakit/`, `.claude/skills/olakit/`, `.grok/skills/olakit/`,
`.pi/skills/olakit/`). It tells the agent to read and update the YAML
before major code or architecture work, and how to drive `olakit` /
`uvx`.

## License

MIT
