diff --git a/custom-skills/97-ourdigital-okf/docs/CHANGELOG.md b/custom-skills/97-ourdigital-okf/docs/CHANGELOG.md new file mode 100644 index 0000000..e739c4b --- /dev/null +++ b/custom-skills/97-ourdigital-okf/docs/CHANGELOG.md @@ -0,0 +1,17 @@ +# Changelog — ourdigital-okf + +## 1.0 — 2026-06-16 + +Initial release. + +- **produce** / **validate** / **visualize** modes for Open Knowledge Format (OKF) v0.1 bundles. +- `okf_common.py` — stdlib YAML-subset frontmatter + link parser (inline/block lists, folded + and `>`/`|` block scalars, quoted scalars). +- `okf_validate.py` — conformance (parseable frontmatter + non-empty `type`) + broken-link + warnings; text/JSON output; meaningful exit code. +- `okf_viz.py` — minimal self-contained Cytoscape graph viewer (CDN libs, no backend). +- Test suite: 20 stdlib `unittest` tests. Verified CONFORMANT against Google's reference + bundles (crypto_bitcoin, ga4, stackoverflow). +- End-to-end verified: produce a 4-concept analytics bundle → validate (0 errors) → + visualize (4 nodes, 9 edges). +- `install.sh` symlinks the skill into `~/.claude/skills/ourdigital-okf`. diff --git a/custom-skills/97-ourdigital-okf/install.sh b/custom-skills/97-ourdigital-okf/install.sh new file mode 100755 index 0000000..0ec91e3 --- /dev/null +++ b/custom-skills/97-ourdigital-okf/install.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# ourdigital-okf installer — symlinks the skill into ~/.claude/skills/ourdigital-okf +set -e +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +SKILLS_DIR="$HOME/.claude/skills" +TARGET="$SKILLS_DIR/ourdigital-okf" + +mkdir -p "$SKILLS_DIR" +if [ -e "$TARGET" ] || [ -L "$TARGET" ]; then + echo "Removing existing $TARGET" + rm -rf "$TARGET" +fi +ln -s "$SCRIPT_DIR" "$TARGET" +echo "Linked $TARGET -> $SCRIPT_DIR" +echo "Verifying scripts (stdlib-only)…" +python3 "$SCRIPT_DIR/code/scripts/okf_validate.py" \ + "$SCRIPT_DIR/code/scripts/tests/fixtures/mini_bundle" >/dev/null && echo "validate OK" +echo "Done. Invoke with /ourdigital-okf"