project-status
Cross-framework project status aggregator — discovers contributors from installed frameworks, runs declarative detection, produces a unified status report.
What this skill does
<!-- AIWG-SKILL-CALLOUT -->
> **Skill access pattern (post-kernel-pivot, 2026.5+)**
>
> Skill names referenced in this document are AIWG skills, **not slash commands**. Most are not kernel-listed and cannot be invoked as `/skill-name` by the platform. Reach them via:
>
> ```bash
> aiwg discover "<capability>"
> aiwg show skill <name>
> ```
>
> Only kernel-listed skills (`aiwg-doctor`, `aiwg-refresh`, `aiwg-status`, `aiwg-help`, `use`, `steward`) are directly invokable as slash commands. See [skill-discovery rule](../../../addons/aiwg-utils/rules/skill-discovery.md).
# Project Status (Cross-Framework Aggregator)
## Task
Produce a unified status report covering every installed framework, addon, or
extension that ships a `kind: status` contributor and is in active use on this
project.
This is the cross-framework aggregator described in ADR-023 §Reference
contributor frontmatter. It replaces the prior SDLC-only project-status
behavior. SDLC-specific reporting now lives in the SDLC framework's status
contributor at `agentic/code/frameworks/sdlc-complete/status/contributor.md` —
when SDLC is the only contributor in use, the resulting report is functionally
equivalent to the prior behavior.
## Parameters
- **`[project-directory]`** (optional): Path to project root. Default: current directory `.`
- **`--json`** (optional): Emit machine-readable JSON instead of human-readable markdown
- **`--guidance "text"`** (optional): Extra context the agent should weigh while interpreting contributor blocks
## Workflow
### Step 1: Locate the registry and project root
Read `.aiwg/frameworks/registry.json` from the project root. The registry lists
installed frameworks/addons/extensions by `id`. If the file is missing, treat
it as zero installed frameworks — discovery still finds project-local
contributors.
```bash
cat ./.aiwg/frameworks/registry.json 2>/dev/null
```
### Step 2: Discover candidate contributors
Two sources, processed in order:
1. **Framework-shipped contributors** — for each `id` in the registry, look up
its source path under the AIWG installation. Try in order:
- `<AIWG_ROOT>/agentic/code/frameworks/<id>/status/contributor.md`
- `<AIWG_ROOT>/agentic/code/addons/<id>/status/contributor.md`
- `<AIWG_ROOT>/agentic/code/extensions/<id>/status/contributor.md`
Use `Glob` to discover, then `Read` to load the contributor file.
2. **Project-local contributors** — every `*.md` file in
`<project-root>/.aiwg/contributors/status/`. These are user-authored
contributors that do not require forking a framework.
### Step 3: Validate and run detection
For each candidate file:
1. Parse YAML frontmatter. Skip with a warning if frontmatter is malformed
or missing required fields (`kind`, `domain`, `description`, `detect.glob`).
The schema is published at
`<AIWG_ROOT>/agentic/code/addons/aiwg-utils/skills/project-status/contributor.schema.json`
— `aiwg validate-metadata` enforces it at deploy time, so most files
reaching this step are valid.
2. Run the contributor's `detect.glob` patterns against the project root using
`Glob`. Deduplicate matches. If unique match count is less than
`detect.minCount` (default 1), the contributor is **installed but not in
use** — silently filter out.
3. For surviving contributors, the agent reads the contributor file's body
to learn what to report and how to format it.
### Step 4: Gather state per contributor
For each in-use contributor, follow its body's guidance to read source files
and compute reported state. Contributors are descriptive — they tell the
agent what to look at; they do not run code.
Keep blocks compact. Per ADR-023 §Output voice, contributors emit observed
state (counts, dates, phase names). Do **not** synthesize prescriptive
"recommended commands" inside a contributor's block.
### Step 5: Render the unified report
Default (markdown) output shape:
```
Project: <project-name> (<detected-domain-summary>)
├─ <Domain 1>: <one-line summary> (origin: <framework-id>)
│ ├─ <fact 1>
│ ├─ <fact 2>
│ └─ <fact N>
├─ <Domain 2>: <one-line summary> (origin: <framework-id>)
│ └─ ...
└─ <Domain K>: <one-line summary> (origin: project-local)
└─ ...
```
Every block carries an **`origin:`** stamp — the framework id (e.g.
`sdlc-complete`, `media-curator`) or the literal `project-local`. This lets
the user see at a glance whether a finding came from a framework's
contributor or a project-specific override.
### Step 6: Handle empty discovery
If discovery returns zero in-use contributors:
- **In a project that has frameworks installed but none are in use yet**:
surface "No active framework contributors detected. Run
`intake-wizard` if this is a new project, or check
`.aiwg/frameworks/registry.json` to confirm what's installed."
- **In a project with no `.aiwg/`**: defer to the heuristic fallback
described in `<AIWG_ROOT>/agentic/code/addons/aiwg-utils/skills/project-status/heuristic-fallback.md`
(added by issue #941). When that file is not yet present, surface a
short "No project state detected" message.
## --json output
Returns a structured array of contributor blocks. Stable shape:
```json
{
"project_root": "/abs/path",
"contributors": [
{
"origin": "sdlc-complete",
"domain": "SDLC",
"summary": "Construction phase, iteration 12, 3 open risks",
"detail": [
{ "label": "Phase", "value": "Construction (entered 2026-04-01)" },
{ "label": "Iteration", "value": "12 of 18 planned" }
]
}
],
"skipped": [
{ "origin": "media-curator", "reason": "detection-no-match" }
]
}
```
Downstream tooling (CI status badges, dashboards) consumes this shape directly.
## Failure mode
Per ADR-023 §Failure mode:
- A contributor that fails frontmatter parsing or validation is **skipped**
with reason `schema-violation`; aggregation continues.
- A contributor whose detection throws (rare — only filesystem permission
errors should cause this) is skipped with reason `detection-error`.
- One bad contributor never aborts the whole report.
When `--json` is set, skips appear under the `skipped` array. In markdown
output, skips are summarized under a `─ Skipped contributors` footer when
non-empty.
## Anti-Patterns
- **Do not invent contributor state.** If a contributor's detection matches
but its source files are absent or unreadable, emit the block with a
clear "details unavailable" note rather than fabricating values.
- **Do not merge or reorder contributor blocks.** Registry order and
project-local-last is the contract per ADR-023 §Discovery Algorithm.
Users rely on it for predictable diffs over time.
- **Do not call into other AIWG commands** (`aiwg index build`, `aiwg run …`)
from this skill. Status reporting is read-only. If a contributor needs
built indexes, surface their absence rather than building them mid-report.
## References
- @.aiwg/architecture/decisions/ADR-023-contributor-discovery-convention.md — Convention this skill implements
- @$AIWG_ROOT/agentic/code/addons/aiwg-utils/skills/project-status/contributor.schema.json — Published JSON Schema for `kind: status` frontmatter
- @$AIWG_ROOT/src/contributors/discover.ts — TS reference implementation used by `aiwg validate-metadata`; demonstrates the discovery algorithm in code
- @$AIWG_ROOT/agentic/code/frameworks/sdlc-complete/status/contributor.md — Reference status contributor (SDLC framework)
- @$AIWG_ROOT/agentic/code/frameworks/media-curator/status/contributor.md — Reference status contributor (media archives)
- @$AIWG_ROOT/agentic/code/frameworks/research-complete/status/contributor.md — Reference status contributor (research corpora)
- @$AIWG_ROOT/agentic/code/frameworks/sdlc-complete/skills/project-health-check/SKILL.md — Complementary skill: code and team health metrics (out of scope for project-status)
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.