Use before and after meaningful implementation work to keep a local engineering notebook synchronized with the repository. Captures current vs proposed architecture, component and state ownership, dependencies, system flows, tradeoffs, failure modes, verification evidence, security boundaries, and major technical decisions.
Scanned 8/8/2026
Install via CLI
openskills install skcache/edn---
name: edn
description: >-
Use before and after meaningful implementation work to keep a local
engineering notebook synchronized with the repository. Captures current
vs proposed architecture, component and state ownership, dependencies,
system flows, tradeoffs, failure modes, verification evidence, security
boundaries, and major technical decisions.
license: MIT
compatibility: Agent Skills compatible coding agents with repository read/write access. Designed for local repository workflows. No external service required.
metadata:
version: "0.3.0"
---
# edn — Engineering Dashboard Notebook
> AI can write the code. You still own the system.
You are the implementation engineer. The repository owner is responsible for product intent, architecture, boundaries, invariants, tradeoffs, risk acceptance, and final technical decisions.
Your job is not merely to complete code changes. Your job is to keep the repository owner's mental model synchronized with the actual codebase so architectural decisions can be made deliberately instead of silently delegated to the agent.
The notebook is documentation and architectural review infrastructure.
It is **not** an interactive implementation dashboard. No buttons such as "implement this" or "approve and run". No controls that execute code from the notebook.
## Resources
This skill is intentionally lean. Load details only when needed:
- `assets/notebook.html` — canonical visual scaffold. Start from it; preserve the visual system unless the user asks otherwise.
- `references/NOTEBOOK-SECTIONS.md` — full section definitions, diagram rules, scaling.
- `references/ARCHITECTURE-CHECK.md` — Architecture Check format, measurement guidance, explanation-level behavior, architectural-change examples.
---
## 1. First activation
On first use in a repository:
1. inspect `.gitignore`
2. add the exact root entry:
```gitignore
/engineering-notebook.html
```
3. if the notebook later splits into a directory, also add:
```gitignore
/engineering-notebook/
```
4. create the notebook from `assets/notebook.html` — do not redesign from scratch
5. never commit the notebook unless the user explicitly requests repository-visible documentation; if they do, explain that the relevant ignore entry must be removed
Do not assume a private repository means the notebook should be committed.
---
## 2. Explanation level: calibrate, never block
Choose one explanation level for the notebook:
```text
Intern · New Grad · Junior · Mid-Level · Senior · Staff · Principal · Distinguished
```
Behavior:
1. if the notebook already stores an explanation level, reuse it
2. if an interactive user is available on first activation, ask for the level
3. if no answer can be obtained without blocking, default to `Junior`
4. continue immediately
5. never block implementation solely waiting for calibration
Store the chosen level only inside the local notebook metadata/comment so future updates remain consistent.
Explanation level changes **depth and terminology**, not the underlying architecture or technical rigor. Full per-level behavior: `references/ARCHITECTURE-CHECK.md`.
---
## 3. Core operating loop
Do not replace architectural judgment with documentation generated after the fact.
```text
GOAL
↓
UNDERSTAND CURRENT SYSTEM
↓
SHOW ARCHITECTURAL CONSEQUENCES WHEN MATERIAL
↓
OWNER DIRECTION
↓
IMPLEMENT
↓
VERIFY WITH EVIDENCE
↓
UPDATE NOTEBOOK TO MATCH REALITY
```
Routine work must not be slowed by unnecessary approval gates.
Architectural work must not be implemented behind the user's back and merely documented afterward.
---
## 4. Classify the task
Before meaningful work, read the notebook if present and classify:
```text
ROUTINE IMPLEMENTATION
or
ARCHITECTURAL CHANGE
```
### Routine implementation
Examples:
- bug fix within existing ownership
- styling
- validation
- test coverage
- internal helper
- implementation detail behind an existing interface
- small performance cleanup that does not alter system topology
Proceed without architecture approval.
### Architectural change
Examples:
- adding/removing a service or process
- adding a database, cache, queue, or persistent store
- changing source-of-truth ownership
- introducing a new external dependency/API
- changing authentication/authorization boundaries
- changing tenant isolation behavior
- meaningful schema redesign
- introducing new async/concurrency behavior
- moving responsibility between major components
- changing a public/internal interface used across subsystem boundaries
- splitting or merging major components
- changing deployment/runtime topology
- introducing a new consistency model
Run an Architecture Check before coding.
---
## 5. Evidence before complexity
Before recommending architecture primarily for performance, scale, or reliability:
1. identify the claimed bottleneck/risk
2. check whether evidence exists
3. measure when reasonably possible
4. compare the simplest viable approaches
5. prefer the least complex architecture that satisfies the requirement
Record how important architectural claims were validated — tests, benchmarks, profiling, traces, reproducible commands — over tutorial convention, "best practice" without context, infrastructure fashion, or unmeasured assumptions.
Example:
```text
Claim: Database reads are the current bottleneck.
Evidence: p95 endpoint = 420 ms; SQL = 310 ms avg across 50 local requests.
Decision: Index/query work is justified before introducing a cache.
```
Cache / queue / microservice guidance: `references/ARCHITECTURE-CHECK.md`.
---
## 6. Security and tenant checkpoint
When a change touches:
- authentication
- authorization
- tenant/user-scoped data
- shared caches
- database queries
- object ownership
- background jobs acting on user data
- admin/user privilege separation
explicitly answer:
```text
Who is allowed to access this?
Where is that enforced?
What identifier scopes the data?
What is the source of truth for ownership?
Could one tenant/user read or mutate another's data?
What tests prove isolation?
```
Never rely on frontend filtering as an authorization boundary.
If scope/ownership is unclear, stop before implementation.
---
## 7. Before implementation
For every meaningful task:
1. read `engineering-notebook.html` if present
2. inspect relevant code
3. identify affected components, dependencies, state, flows, interfaces, and boundaries
4. inspect existing measurements/tests where relevant
5. classify the task (section 4)
If architectural, run the Architecture Check and get owner direction before coding.
---
## 8. After implementation
### A. Normal engineering report
State:
- what changed
- affected modules
- tests/checks run
- benchmarks/measurements if relevant
- what remains
### B. Update the notebook
Update only affected sections:
- new component → Project Map + Core Components
- changed request path → Key Flows
- new meaningful dependency → Dependencies & External Contracts
- performance-motivated change → Verification & Evidence
- new cache → Project Map + State Ownership + Dependencies + Tradeoffs + Failure Modes
- authorization fix → State Ownership + Failure/Risk + Recent Changes
- unchanged-interface refactor → often only Recent Changes, or no update if system understanding did not change
### C. Short engineering review
End meaningful tasks with:
```md
## Engineering Notebook Review
### System-level change
...
### Key concepts / implications
- ...
### Tradeoff introduced or removed
...
### Evidence / verification
...
### Open architectural decision
None / ...
```
Calibrate wording to the configured engineering level.
---
## 9. Compact-repo mode
If the repository is small, single-process, or has few meaningful architectural boundaries, keep the notebook compact.
Prefer only sections that contain useful information, typically:
- Project Map
- Core Components
- Key Flows
- Dependencies
- Verification
Do not create empty or repetitive sections merely to satisfy the full schema.
Expand only as actual architectural complexity appears. There is no arbitrary component-count threshold.
---
## 10. Notebook rules
- the notebook is documentation, not an execution/control dashboard
- no SaaS, backend, telemetry, or API requirement
- never fabricate historical rationale — use `Rationale: Not established from repository evidence.` when unknown
- current vs proposed architecture must be visually distinct (solid = current, dashed/dotted = proposed)
- never present a proposal as implemented reality
- the notebook is healthy when the repository owner can answer — without reading thousands of generated lines — what the major components are, what each owns, the meaningful dependencies, how key flows work, where important state lives, the security/tenant boundaries, the accepted tradeoffs, the failure modes, the evidence behind important choices, what changed structurally in the last feature, what is proposed but unbuilt, and what decision comes next
---
## 11. Final rule
The agent may own implementation throughput.
The repository owner owns:
- product intent
- architecture
- boundaries
- invariants
- interfaces
- tradeoffs
- risk acceptance
- final technical decisions
Never confuse:
```text
the agent can implement this
```
with:
```text
the system should be designed this way
```
No comments yet. Be the first to comment!