orchestra-adr
Capture an architectural decision record — document a decision that was made during work, why it was made, and its consequences.
What this skill does
# Write ADR
Capture a decision that was made during the course of work. ADRs are not initiated by tickets — they emerge during execution and serve as ambient context for future agents and developers working on the project.
## What Makes a Good ADR
An ADR captures a decision that:
- Has consequences that future agents need to understand before acting
- Would otherwise only exist in someone's head or a chat log
- Represents a fork in the road — alternatives were considered and one was chosen
Not every decision needs an ADR. Trivial choices, obvious implementations, and temporary workarounds do not.
## Prerequisites
- `.orchestra/adr/` directory must exist in the project
- A decision has been made (or is being made) that meets the bar above
## Steps
### 1. Establish Context
- Glob `.orchestra/adr/` to see existing ADRs and their numbering
- Read the most recent 2-3 ADRs to understand the project's decision history and writing style
- Determine the next ADR number (`ADR-{NNN}`)
### 2. Gather the Decision
From $ARGUMENTS or by asking the user:
- **What was decided?** One clear sentence.
- **What problem prompted this decision?** What situation forced a choice?
- **What alternatives were considered?** At least briefly — even if rejected quickly.
- **Why was this option chosen?** The reasoning, not just the outcome.
- **What are the consequences?** What does this decision enable, constrain, or close off?
If the user provides $ARGUMENTS with a description, use that as the starting point and ask only for gaps.
### 3. Determine the Status
ADRs use a four-value vocabulary:
- `proposed` — decision is under active consideration, not yet settled
- `accepted` — decision is made and active
- `deprecated` — no longer applies, context has changed
- `superseded` — replaced by a newer ADR (note which one)
New ADRs are almost always `accepted` — if a decision isn't made yet, it's too early to write the ADR.
### 4. Generate the ADR
Use this structure:
```markdown
---
status: accepted
created_on: {YYYY-MM-DD}
---
# ADR-{NNN}: {Title}
## Context
{The situation that forced a decision. What problem or constraint prompted this. What was true about the world at the time.}
## Decision
{What was decided, stated clearly. One or two sentences maximum. This is the headline.}
{Expand on the reasoning — why this option over the alternatives. What trade-offs were accepted.}
## Consequences
{What this decision enables, constrains, or closes off. What future work now looks different because of this. What agents should know before acting in this area.}
```
No `ticket` field — ADRs are not initiated by tickets. They reference the work that prompted them through context, not frontmatter.
### 5. Determine the Filename
Use the convention: `ADR-{NNN}-{short-kebab-title}.md`
Examples:
- `ADR-001-orchestra-artifact-frontmatter-contract.md`
- `ADR-002-direct-api-over-subprocess.md`
- `ADR-003-agentic-factory-as-skill-authoring-tool.md`
### 6. Write the File
Save to: `.orchestra/adr/ADR-{NNN}-{short-kebab-title}.md`
### 7. Present for Review
Show the user the complete ADR. Ask:
- Does the context accurately describe the situation?
- Is the decision statement clear and unambiguous?
- Are the consequences complete — anything future agents need to know that's missing?
## Quality Checks
- [ ] Status is one of: `proposed`, `accepted`, `deprecated`, `superseded`
- [ ] `created_on` is today's date in `YYYY-MM-DD` format
- [ ] No `ticket` field — ADRs are not ticket-initiated
- [ ] Decision is stated in 1-2 sentences — not buried in prose
- [ ] Consequences are written for a future agent, not a human reader — what do they need to know before touching this area?
- [ ] Filename follows `ADR-{NNN}-{short-kebab-title}.md` convention
- [ ] Numbered correctly — no gaps or duplicates with existing ADRs
## ADRs as Ambient Context
ADRs are the project's institutional memory. Future agents glob `.orchestra/adr/` before starting work and read `accepted` ADRs to understand why the project is shaped the way it is. An ADR that is vague, incomplete, or missing is an agent that will repeat a mistake or re-litigate a settled decision.
Write ADRs as if briefing a capable agent who has never seen this project before.
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.