← Files NaClARCHIVED FILE
skills/nacl-ba/resources/workflows/nacl-core/SKILL.md
6.68 KB · Oct 3, 2026 · 06:30 UTC
---
name: nacl-core
description: |
Shared NaCl conventions for Codex-adapted skills: graph configuration,
Neo4j tool assumptions, schema locations, ID conventions, Excalidraw board
conventions, confirmation gates, and verification vocabulary. Use when a
Codex NaCl skill needs common graph or workflow rules. Also use when the user
refers to `nacl-core`.
---
# NaCl Core For Codex
## Installation mode preflight
Before any workflow work, reuse a `project MCP read canary` result from the
current invocation or call that tool once when it is available. Continue only
when it returns `status=VERIFIED`; a `FAILED` or `BLOCKED` result stops the
workflow with its actionable guidance.
If the tool is absent or cannot be called, never infer legacy-only mode and do
not shell to a package/cache path. Report `BLOCKED`. The separate legacy
symlink distribution owns its own fallback; a plugin workflow uses only the
project-local MCP read canary and preserves its exact result.
This skill is a shared reference for Codex-adapted NaCl skills. It is not a
user-facing workflow skill.
## Core Rules
- Preserve graph-first BA/SA methodology and TL lifecycle contracts.
- Read project `config.yaml` before graph-aware work when file access is
available.
- Use only statuses from `../references/verification-vocabulary.md`.
- Honour the evidence taxonomy in `../references/verification-evidence.md`
whenever a skill writes a terminal `Task.status` to the graph.
- Apply confirmation gates from `../references/migration-rules.md`.
- Do not select or constrain the runtime model.
## Graph Configuration
Resolve graph settings from the current project's `config.yaml` when file access
is available:
| Data | Source priority |
|---|---|
| Neo4j Bolt port | `graph.neo4j_bolt_port` > fallback `3587` |
| Neo4j HTTP port | `graph.neo4j_http_port` > fallback `3574` |
| Neo4j secret | `graph.neo4j_secret_reference` (no committed fallback) |
| Boards directory | `graph.boards_dir` > fallback `"graph-infra/boards"` |
| Container prefix | `graph.container_prefix` > `project.name` > fallback `"graph"` |
Connection strings are for user-facing diagnostics only. Actual graph access is
allowed only through graph tools available in the current Codex environment.
## Schema And Query Locations
- BA schema: `graph-infra/schema/ba-schema.cypher`
- SA schema: `graph-infra/schema/sa-schema.cypher`
- TL schema: `graph-infra/schema/tl-schema.cypher`
- Queries: `graph-infra/queries/`
## ID Conventions (selected)
Allocate ids by scanning the existing max suffix and incrementing. Provenance and
change-tracking ids:
- `DEC-NNN` — `:Decision` node (graph-native rationale; global sequential, like
`ADR-NNN`). Written by `nacl-sa-feature`, `nacl-tl-fix` (L2/L3), and
`nacl-sa-finalize`. A `:Decision` is NOT a `Requirement` — keep it a distinct
label so it does not pollute the L3 requirement check or the planner.
- Change-tracking properties (no new ids): `UseCase.spec_version`,
`Task.planned_from_version`, and `review_status`/`stale_reason`/`stale_since`/
`stale_origin` on snapshot-bearing nodes — read with
`coalesce(n.review_status,'current')`.
- Screen state machine ids (written by `nacl-sa-ui state-machine`):
`SCR-{PascalName}` (`:Screen`), `SCRST-{Screen}-{State}` (`:ScreenState`),
`SCREV-{Screen}-{Event}` (`:ScreenEvent`), `SCRTR-{Screen}-NNN` (reified
`:Transition`, per-screen sequential), `SCREF-{Screen}-NNN` (`:ScreenEffect`,
per-screen sequential), `ANEV-{Name}` (`:AnalyticsEvent`). `{Screen}` is the
PascalName part of the Screen id without the `SCR-` prefix.
- `SLC-{NNN}-{PascalName}` — `:Slice` node (graph-native acceptance scenario,
written by `nacl-sa-uc slices`). `{NNN}` is the parent UC number
(`UC-006` → `006`); `{PascalName}` derives from a latin short scenario name
(kebab/snake/space → PascalCase). The infix keeps repeated scenario names
unique across UCs and enables `STARTS WITH 'SLC-NNN-'` scoping.
- `ERR-{UPPER_SNAKE_CODE}` — `:DomainError` node (transport-independent domain
error, written by `nacl-sa-uc errors`; also by `nacl-tl-fix` when an L2/L3
fix uncovers a missing error branch). `{UPPER_SNAKE_CODE}` equals the `code`
property — domain-prefixed (`PROMO_NOT_FOUND`, never bare `NOT_FOUND`).
Module-scoped shared vocabulary (`(:Module)-[:HAS_ERROR]->`): MERGE by id,
never duplicate per UC. `ERRP-{CODE}-{PascalName}` — `:ErrorPresentation`
node (one user-facing presentation; PascalName from the presentation
kind/context). See `sa-schema.cypher` § 3-quater and `sa_uc_errors`.
- `CACHE-{PascalName}` — `:CachePolicy` node (caching policy of one server
data surface, written by `nacl-sa-uc resilience`; also by `nacl-tl-fix`
when an L2/L3 fix uncovers a missing cache/invalidation policy). PascalName
from the cached surface + storage (`CACHE-ResultMediaIndexedDb`).
Module-scoped shared vocabulary (`(:Module)-[:HAS_CACHE]->`): MERGE by id,
never duplicate per UC. `DEG-{NNN}-{PascalName}` — `:DegradationRule` node
(one UC's degradation behavior); `{NNN}` is the parent UC number — the
infix enables `STARTS WITH 'DEG-NNN-'` scoping, exactly like `SLC`. See
`sa-schema.cypher` § 3-quinquies and `sa_uc_resilience`.
If these files are unavailable, report:
```text
Status: BLOCKED
Reason: graph schema or query files are unavailable in the current workspace
```
## Capabilities
### May Do
- Provide shared graph, schema, board, and verification conventions.
- Read project configuration and schema files when file access is available.
- Explain which graph tools a downstream skill needs.
### Must Not Do
- Modify graph data directly.
- Modify project files.
- Select or constrain the runtime model.
- Claim graph access exists without checking tool availability.
### Conditional Tools And Actions
- File reads are conditional on workspace access.
- Graph reads or writes are conditional on available graph tooling.
- Board file operations are conditional on available filesystem permissions.
### Blocked Or Unverified Reporting
- Use `BLOCKED` when required files, tools, or permissions are unavailable.
- Use `UNVERIFIED` when conventions cannot be checked against the workspace.
## Source Comparison
- Source Claude skill path: `../../nacl-core/SKILL.md`
### Preserved Methodology
- Graph-first shared conventions.
- Config-driven graph defaults.
- Schema and query location awareness.
- Excalidraw board conventions.
### Removed Claude Mechanics
- Direct assumptions about specific MCP tool availability.
- Source framework wording as runtime instruction.
- Non-Codex frontmatter shape.
### Codex Replacement Behavior
- Treat graph and file access as conditional capabilities.
- Use closed verification vocabulary.
- Keep this skill as shared guidance, not a direct workflow.
SHA-256: 3300a37c47c3fe7d4f5bee110c0d4a3ae106de85315fd51abbb69405c8c99dc8