Use when filling in knowledge-layer context files — auth-model, tenant-boundaries, data-sensitivity, deployment-order, observability — interactive walkthrough that turns templates into reviewer fuel.
Scanned 6/5/2026
Install via CLI
openskills install event4u-app/agent-config---
model_tier: inherit
name: context-authoring
description: "Use when filling in knowledge-layer context files — auth-model, tenant-boundaries, data-sensitivity, deployment-order, observability — interactive walkthrough that turns templates into reviewer fuel."
domain: process
workspaces:
- agent-config-maintainer
packs:
- meta
---
# context-authoring
## When to use
Use this skill when:
- A new project has been scaffolded and the `agents/settings/contexts/` files are still
template stubs from `event4u/agent-config`.
- The user asks "help me fill in the auth model context", "set up tenant
boundaries", or similar knowledge-layer work.
- A reviewer skill (`authz-review`, `data-flow-mapper`, `migration-safety`,
`multi-tenant-boundary-review`, `secrets-and-config-review`) reports *"I
cannot proceed — `agents/settings/contexts/<file>.md` is still a template"*.
- After a significant architecture change that invalidates one of the five
context files.
Do NOT use when:
- Writing a regular roadmap or feature doc — use `agent-docs-writing`.
- Creating a generic context document that does not map to one of the five
knowledge-layer templates — use `context-create`.
- Filling in the engineering-memory YAML files (`domain-invariants.yml`, etc.)
— use `/memory-add`.
## The five files
| File | What it answers | Who reads it |
|---|---|---|
| `auth-model.md` | Roles, permission model, impersonation, known exceptions | `authz-review`, `judge-security-auditor`, `threat-modeling` |
| `tenant-boundaries.md` | Tenancy type, scope propagation, known cross-tenant paths | `multi-tenant-boundary-review`, `blast-radius-analyzer`, `judge-security-auditor` |
| `data-sensitivity.md` | Field classification, masking rules, log-safe types | `data-exposure-review`, `data-flow-mapper`, logging reviewers |
| `deployment-order.md` | Migration strategy, feature flags, rollback plan | `migration-safety`, `judge-bug-hunter`, release reviewers |
| `observability.md` | Error tracking, log channels, metrics, known alerts | deploy reviewers, `bug-analyzer`, incident mode |
The templates ship in `.agent-src.uncondensed/templates/contexts/` and are
copied into `agents/settings/contexts/` by the installer.
## Procedure: context-authoring
### Step 0: Inspect
1. List `agents/settings/contexts/` — which of the five files exist? Which still contain
the `<!-- Template shipped by event4u/agent-config. -->` HTML comment?
2. Ask the user which file to work on. Use numbered options:
```
> 1. auth-model.md — roles, permissions, impersonation
> 2. tenant-boundaries.md — tenancy type and scope propagation
> 3. data-sensitivity.md — field classification and masking
> 4. deployment-order.md — migrations, flags, rollback
> 5. observability.md — errors, logs, metrics, alerts
```
3. If multiple files are stubs, default to the order above — `auth-model` is
the prerequisite for `tenant-boundaries`; both feed `data-sensitivity`.
### Step 1: Harvest evidence before asking
For the chosen file, pull what the codebase already reveals before asking
the user. Record the file:line citations — they become the authoritative
source when the user is unsure.
| File | Harvest from |
|---|---|
| `auth-model.md` | Policy classes, Gate definitions, permission seeders, role enums, `@can` directives, middleware |
| `tenant-boundaries.md` | Base query scopes, connection-switching middleware, tenant-resolution service, global scopes, `.env` vars like `TENANT_*` |
| `data-sensitivity.md` | ORM hidden-field config (Eloquent `$hidden` / `$casts`, Symfony `#[Ignore]`, Prisma `select` defaults, SQLAlchemy `__init__` filters), Sentry `beforeSend`, logging redaction helpers, API serialisers / resources, export commands |
| `deployment-order.md` | `database/migrations/`, feature-flag config (Pennant / LaunchDarkly), deploy scripts, CI workflow, rollback runbooks in `docs/` |
| `observability.md` | `config/logging.php`, Sentry init, dashboard links in READMEs, alert rules in Terraform/Grafana dashboards |
Start the walkthrough by showing the harvested evidence — the user only
has to confirm or correct, not invent from scratch.
### Step 2: Walk the template section by section
1. Open the template and treat **every HTML comment** as a question for the
user. Do NOT fabricate answers to skip a section.
2. Present each section as:
```
**Section:** <heading>
**Template asks:** <what the comment says>
**Evidence I found:** <file:line references or "none">
**Proposed content:** <draft or "I need your input">
> 1. Accept the draft
> 2. Edit — tell me what's wrong
> 3. I don't know — mark as "TBD" with a follow-up task
```
3. If the user picks "TBD", insert an HTML comment `<!-- TBD: <question> -->`
at that spot — never a fabricated value. Reviewer skills key on the
comment to warn about incomplete sections.
### Step 3: Preserve the file contract
1. Remove the top-of-file `<!-- Template shipped by ... -->` comment only
after at least one section has been authored — an untouched file must
stay recognisable as a stub.
2. Keep every heading the template ships with. Reviewer skills grep for
exact section names (`## Known exceptions`, `## Known alerts`, etc.).
3. Do NOT add new top-level sections. The template surface is the
contract — extend existing sections, file a proposal via
`learning-to-rule-or-skill` to expand the template upstream.
### Step 4: Validate
1. Run `python3 scripts/check_portability.py` — project-specific content is
expected here, but the check catches accidental copy of other projects'
identifiers.
2. Run `python3 scripts/check_references.py` — cross-file links between the
five contexts must resolve.
3. Confirm with the user: "is this accurate enough that a reviewer should
treat it as the source of truth?" — anything less and a `<!-- TBD -->`
marker stays.
## Output format
1. `agents/settings/contexts/<file>.md` updated with project-specific content; every
section either authored or explicitly marked `<!-- TBD: ... -->`.
2. A short summary comment back to the user: which sections are complete,
which are `TBD`, and which downstream reviewer skills are now unblocked.
3. Optional: a proposal stub in `agents/learnings/` for any template gap
the user hit (missing section, ambiguous field) — feeds the curated
self-improvement pipeline via `learning-to-rule-or-skill`.
## Gotcha
- The model tends to fabricate plausible roles, fields, or alerts when
harvesting comes up empty. Do NOT. An `<!-- TBD: ... -->` marker is
always better than a made-up entry — reviewer skills trust this file.
- The model tends to collapse the template once it starts editing, losing
the HTML comments that explain *why* a section exists. Preserve them
until the section is authored — they are the authoring prompt.
- `data-sensitivity.md` is the highest-leverage file and also the one most
likely to be skipped as "boring". Prioritise it after `auth-model` —
missing entries here become production leaks, not review nits.
- Do not treat this skill as a form-filler. If a project is single-tenant,
`tenant-boundaries.md` SHOULD be deleted, not stubbed — the checklist
explicitly says so at the top of the file.
## Path conventions when a context cites another context
If the context file declares its own `load_context:` (chain reasoning),
use logical names rooted at the source — `contexts/<area>/<file>.md`
for package material or `agents/settings/contexts/<file>.md` for project-local
material. The `.agent-src.uncondensed/` prefix is rejected by the
schema regex and by `scripts/lint_load_context.py`. Body links to
`docs/guidelines/...` use the verbatim `../../docs/...` relative form.
Canonical reference: `rule-writing` § 3b and
`docs/contracts/load-context-schema.md`.
## Frugality Standards
Apply the [Frugality Charter](../../contexts/contracts/frugality-charter.md)
to every context file you author.
**Examples in this artifact:**
- Per the charter's index nature, context files are reviewer fuel —
they hold mechanics, not Iron-Law obligations.
- Per the cite-don't-restate principle, when a section mirrors a
rule, link the rule and stop.
- Per the act-skip-narration rule, lookup tables open the section;
explanatory prose follows only if the table is ambiguous.
**Pre-save self-check:**
1. Does the context file restate Iron-Law text instead of linking
the rule?
2. Does any section open with "This document explains…" instead of
the lookup material?
3. Are placeholders (`<add me>`, `TBD`) shipped instead of actual
content?
4. Are the cited rules linked with stable anchors (verified to
exist)?
## Do NOT
- Do NOT copy content between projects. Every context file is local to its
repo. Reuse of another project's roles, tenants, or alerts is a
portability violation and a security risk.
- Do NOT commit TBD-heavy files without flagging them in the PR
description. Reviewer skills will downgrade confidence, but a human
reviewer should know the contexts are partial.
- Do NOT rename or restructure the template sections. Reviewer skills
grep for exact headings.
No comments yet. Be the first to comment!