Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .github/workflows/capability-map-skill-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Capability-map skill
on:
pull_request:
paths:
- 'transitrix/skills/render-dsm-capabilities-html/**'
- '.github/workflows/capability-map-skill-test.yml'
workflow_dispatch:
permissions:
contents: read
jobs:
renderer:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Run renderer regression checks
run: python3 transitrix/skills/render-dsm-capabilities-html/scripts/test_render.py
- name: Check portable package
run: python3 transitrix/skills/render-dsm-capabilities-html/scripts/test_package.py
4 changes: 4 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@ A Skill is a packaged Claude Code capability under `transitrix/skills/<name>/`,

Add supporting material only as the skill needs it, following existing precedent: `templates/` for scaffolded files (`onboard/templates/`), `prompts/` for multi-step prompt sequences (`ingest/prompts/`, `reg-intel/prompts/`), `schemas/` for JSON Schema the skill validates against, `tests/` for a deterministic integrity test (`onboard/tests/`, `knowledge-store/tests/`).

Portable Agent Skills may nest runtime-specific trigger/version fields under
`metadata` when their host rejects unknown top-level fields. Their README must
state the input/runtime compatibility rather than implying a released contract.

**Changing an existing skill:**

1. Read the skill's `SKILL.md` and `README.md` in full before editing — the two must stay consistent with each other and with the skill's actual behaviour.
Expand Down
24 changes: 24 additions & 0 deletions publish-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
".github/pull_request_template.md",
".github/workflows/adl-guard.yml",
".github/workflows/capability-contract-test.yml",
".github/workflows/capability-map-skill-test.yml",
".github/workflows/check-commit-authors.yml",
".github/workflows/decisions-cli-test.yml",
".github/workflows/dependabot-auto-merge.yml",
Expand Down Expand Up @@ -830,6 +831,29 @@
"transitrix/skills/reg-intel/templates/reg-intel-daily.timer",
"transitrix/skills/reg-intel/tests/test_reg_intel_integrity.py",
"transitrix/skills/reg-intel/tests/test_reg_intel_prompts.py",
"transitrix/skills/render-dsm-capabilities-html/LICENSE",
"transitrix/skills/render-dsm-capabilities-html/README.md",
"transitrix/skills/render-dsm-capabilities-html/SKILL.md",
"transitrix/skills/render-dsm-capabilities-html/agents/openai.yaml",
"transitrix/skills/render-dsm-capabilities-html/assets/acme-corp-demo-extensions.json",
"transitrix/skills/render-dsm-capabilities-html/assets/acme-corp-source-example.json",
"transitrix/skills/render-dsm-capabilities-html/assets/acme-corp-source.json",
"transitrix/skills/render-dsm-capabilities-html/assets/example.json",
"transitrix/skills/render-dsm-capabilities-html/assets/icon.svg",
"transitrix/skills/render-dsm-capabilities-html/assets/synthetic-regression.json",
"transitrix/skills/render-dsm-capabilities-html/references/acme-corp-LICENSE.txt",
"transitrix/skills/render-dsm-capabilities-html/references/acme-corp-example.md",
"transitrix/skills/render-dsm-capabilities-html/references/date-timeline.md",
"transitrix/skills/render-dsm-capabilities-html/references/dsm-rules.md",
"transitrix/skills/render-dsm-capabilities-html/references/input-contract.md",
"transitrix/skills/render-dsm-capabilities-html/references/methodology-boundary.md",
"transitrix/skills/render-dsm-capabilities-html/references/methodology-correction.md",
"transitrix/skills/render-dsm-capabilities-html/references/system-coverage.md",
"transitrix/skills/render-dsm-capabilities-html/references/view-controls.md",
"transitrix/skills/render-dsm-capabilities-html/scripts/package.py",
"transitrix/skills/render-dsm-capabilities-html/scripts/render.py",
"transitrix/skills/render-dsm-capabilities-html/scripts/test_package.py",
"transitrix/skills/render-dsm-capabilities-html/scripts/test_render.py",
"transitrix/skills/repo-check/README.md",
"transitrix/skills/repo-check/SKILL.md",
"transitrix/skills/report/README.md",
Expand Down
5 changes: 5 additions & 0 deletions transitrix/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ Regenerate with `node packages/plugin-examples/src/generate.mjs`; CI (`.github/w
| **Ingest** | `/transitrix:ingest` | Turns raw organisational documents — interviews, policies, org charts — into `field`-zone artefacts and typed canon candidates, then stages a human review queue | 0.6.0 |
| **Repo-check** | `/transitrix:repo-check` | Read-only health check: methodology version, coverage-profile resolution, per-TYPE element counts, and integrity flags — all data-free, safe to share externally | 0.6.0 |
| **Report** | `/transitrix:report` | Produces a reproducible compliance report (obligation × subject impact matrix or per-regime coverage metric) via a committed view-config artefact and the `@transitrix/cli` renderer | 0.6.0 |
| **Capability map** | `/transitrix:render-dsm-capabilities-html` | Portable interactive HTML/native SVG from explicit JSON, with dated states, layers, tags and multi-system coverage | Standalone adapter; [compatibility](skills/render-dsm-capabilities-html/README.md) |
| **Reg-intel** | `/transitrix:reg-intel` | Monitors regulatory sources, classifies new instruments against the organisation's obligation catalogue, and stages a review digest for human triage | 0.6.0 |
| **ADR** | `/transitrix:adr` | Runs a Context/Decision/Consequences interview and lands the result as a gated Architecture Decision Record (`operations/decisions/ADR-YYYY-MM-DD-*.md`), never self-accepting and never editing an accepted record's body | 0.6.0 |
| **Feedback** | `/transitrix:feedback` | Routes a methodology-directed finding away from data/model problems, runs a scrub-gated interview, and lands it as an anonymised `FB-NNNN` entry in `operations/feedback.md`; exports a ready-to-send message on request only, never transmits it itself | 2.1.0 |
Expand All @@ -66,6 +67,10 @@ Regenerate with `node packages/plugin-examples/src/generate.mjs`; CI (`.github/w

---

The standalone capability-map renderer needs only Python 3 and its documented
JSON input. It can also be copied into another Agent Skills host; native YAML
ingestion and released CLI/DSM/Studio adoption are separate.

## What the plugin does not do

- It does not vendor a copy of the methodology canon. When a skill needs the full spec it fetches it from `github.com/transitrix/methodology` via `WebFetch`.
Expand Down
21 changes: 21 additions & 0 deletions transitrix/skills/render-dsm-capabilities-html/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2023-2026 Valerii Korobeinikov

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
63 changes: 63 additions & 0 deletions transitrix/skills/render-dsm-capabilities-html/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Capability-map HTML/SVG skill

Create a portable business capability map from explicit source data: vertical
domains, horizontal cross-cutting abilities and readable nested L2/L3 boxes.
The interactive HTML adds five management-cycle layers, ESG/MDM/Support tag
filters, date navigation, multi-system coverage and exact-view SVG export.
Python 3 is the only runtime requirement; rendering needs no server or network.

## Use with an agent

This is a skill in the Transitrix plugin. With the plugin installed, invoke
`/transitrix:render-dsm-capabilities-html` in Claude Code. For a host that loads
portable Agent Skills, copy this entire folder into its skill directory and
invoke `$render-dsm-capabilities-html` (Codex) or reference `SKILL.md` directly.
Runtime-specific trigger metadata is nested under `metadata` to retain the
portable Agent Skills frontmatter shape. Existing invocation policy is retained.

Example request:

> Render the supplied capability model as an interactive map. Preserve its
> dates, explicit V/H lanes and mappings. Include a script-free SVG of the view.

## Run without an agent

From this skill folder:

```sh
python3 scripts/render.py assets/example.json acme-capability-map.html
python3 scripts/render.py assets/example.json acme-capability-map.svg --date 2027-01-01 --sort-layers --no-backlog
python3 scripts/test_render.py
python3 scripts/package.py /tmp/render-dsm-capabilities-html-6.8.2.zip
```

Open the HTML in a browser. Backlog, system labels and coverage are initially off.
Choose a date, select systems and enable Coverage polygons. Use Diagram only and
Fit to screen for presentation; Download SVG captures the exact visible view.
A source-only Acme adapter is also included; the expanded teaching example
labels its illustrative additions and planned states visibly.

## Meaning and compatibility

The five stages are Strategic, Learning, Planning, Execution and Assurance.
Strategic includes strategic planning; Planning is tactical/operational. ESG,
MDM and Support are tags, independent of actual horizontal capabilities.
Coverage follows explicit direct/technical links; geometry is not a percentage
or proof of redundant functionality.

Input is the standalone JSON contract, not native Transitrix YAML. Read
[methodology mapping](references/methodology-boundary.md) for the merged source
revision, unreleased core changes and consumer limitations. Native multi-tag OR
filtering is not implemented; this UI selects one tag. Canonical maturity is
1–5; explicit legacy 0 is an absence diagnostic, never a missing assessment.

The renderer is version 6.8.2, adapter `dsm-capability-html/6`. It does not edit
DSM/Studio or imply their adoption of this contract. HTML includes all supplied
snapshots: filters are presentation, not security redaction.

## Included data and license

[Acme example notes](references/acme-corp-example.md) identify the immutable
source revision, retained source bytes and illustrative teaching overlay.
The renderer and skill are MIT licensed under the repository license; the
source Acme fixture's MIT license is retained with its attribution.
75 changes: 75 additions & 0 deletions transitrix/skills/render-dsm-capabilities-html/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
name: render-dsm-capabilities-html
description: Render DSM-style business capability maps as portable interactive HTML and native SVG, with dated snapshots, management-cycle layers, tags and explicit multi-system coverage. Use for standalone capability maps, not capability trees, BCMFlow or native DSM/Studio editing.
license: MIT
allowed-tools: Read, Bash, Glob, Grep
metadata:
version: "6.8.2"
when_to_use: "Create or update a portable capability-map HTML/SVG, show system coverage, or compare explicitly supplied dated capability states."
source_contract: "888c03d33c2d899ec85a612901075b67811614e5"
---

# Render a business capability map

Use Python 3 standard library only. Resolve `SKILL_DIR` as this skill's actual
folder, independently of the working directory. Keep source models unchanged;
write generated output to the user's chosen destination.

## Establish the source meaning

Read [input contract](references/input-contract.md) before adapting data and
[methodology mapping](references/methodology-boundary.md) before converting
native Transitrix records. Input is the documented standalone JSON projection,
not native YAML. Preserve source revisions, evidence dates, explicit V/H
addresses and lanes, independent Current/Target states and mapping provenance.
Missing support means not specified; never infer it from names, tags or hierarchy.

This uses the classic DSM Report grid: V-L1 domain columns, horizontal H-L1
bands and nested L2/L3. State that assumption for vague "like DSM" requests.
Use [DSM source rules](references/dsm-rules.md) for source-specific geometry;
no pixel parity or native product integration is claimed.

## Render and choose a view

```sh
python3 "$SKILL_DIR/scripts/render.py" model.json capability-map.html
python3 "$SKILL_DIR/scripts/render.py" model.json capability-map.svg --date 2027-01-01 --sort-layers --no-backlog
```

Read [view controls](references/view-controls.md) for layers, tags, nested widths,
backlog, labels, legend, Diagram only, zoom, fit-to-screen and exact-view export.
The five management stages are Strategic, Learning, Planning, Execution and
Assurance. ESG, MDM and Support are independent tags. Neither stages nor tags
inherit. Preserve L1/L2/L3 containment and explicit horizontal intersections.

For dated input, read [date timeline](references/date-timeline.md): distinguish
model-validity date, source/evidence date and planned intent. Gaps show no data
and disable export. Never derive a date from a descriptive target horizon or
claim that a plan became observed fact when its date passed.

For coverage, read [system coverage](references/system-coverage.md). Use only
explicit APPLICATION and application-owned technical mappings. A red outline
marks the region inside at least two selected outer polygons; it is a geometric
diagnostic, not proof of redundant functions or a coverage percentage.

## Verify and deliver

Use [the Acme teaching example](assets/example.json) for a demonstration;
[source/illustration notes](references/acme-corp-example.md) distinguish its
source-backed core from invented teaching records. Preserve visible demo and
planned-state labels. Never mix synthetic assignments into source canon.

Run `python3 "$SKILL_DIR/scripts/test_render.py"` after renderer changes.
Inspect both classic and layered layouts: readable names, nested rectangles,
direct mappings, dated coverage, selected-view SVG and no external SVG assets.
System/Maturity labels expand boxes; hidden labels reserve no empty lines.

Record renderer/adapter/model revisions and the merged-but-unreleased methodology
source separately. The canonical maturity scale is 1–5; explicit legacy 0 is
an absence diagnostic and missing maturity is not 0. The standalone tag filter
supports one selected tag; report unsupported native multi-tag settings.

Deliver local HTML/SVG files (or native attachments where available), with
selected date/scenario and any unverified runtime behavior. Display filters are
not redaction: HTML includes all supplied snapshots. Publishing or sending the
artifact requires the user's authorization.
14 changes: 14 additions & 0 deletions transitrix/skills/render-dsm-capabilities-html/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
interface:
display_name: DSM Capability Map HTML
short_description: Capability grids, system support and exact-view SVG export
default_prompt: Use $render-dsm-capabilities-html to render this capability model
as a standalone DSM-style HTML grid.
icon_small: assets/icon.svg
icon_large: assets/icon.svg
policy:
products:
- chatgpt
- codex
- api
- atlas
allow_implicit_invocation: true
Loading
Loading