| 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 nacl_installation_doctor 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
package MCP nacl_installation_doctor 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:
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.