Variables
Arguments: $ARGUMENTS
Configured active profile: ${user_config.active_profile}
Purpose
Collect, deduplicate, rank, and present current AI-industry developments without depending
on organization-specific configuration. Markdown is the default output. HTML and PPTX are
explicit, optional outputs backed by the bundled deterministic build pipeline.
Source and access policy
Use only interfaces that authorize automated access:
- Official vendor blogs, documentation, changelogs, and release notes.
- GitHub release pages and repository APIs.
- RSS/Atom feeds listed by the selected profile.
- Reputable secondary reporting, corroborated by a primary source when practical.
- User-supplied public URLs and context.
Automated X/Twitter collection is disabled. Do not crawl, scrape, scroll, navigate, fetch,
or extract X pages through browser automation, DOM scripts, unofficial endpoints, or Grok.
Do not refresh following graphs or profile metadata. X's current terms expressly prohibit
crawling or scraping without prior written consent: https://x.com/en/tos.
If the user supplies an X URL, preserve it as user-provided citation metadata but do not
programmatically retrieve it. Ask for the relevant text when it is necessary, and seek a
non-X primary source for corroboration. This plugin does not configure a paid X API.
Playwright is allowed only for deterministic rendering and inspection of locally generated
HTML/PDF artifacts. It is not a collection provider.
Arguments
| Flag |
Default |
Effect |
--profile <name> |
Configured active_profile, then default |
Select a named profile for this invocation. |
--since <timeframe> |
14d |
Accept 1d, 3d, 7d, 14d, 30d, or an ISO date. |
--providers <list> |
All |
Limit collection to comma-separated provider buckets. |
--extras / --no-extras |
On |
Include or omit robotics, science, and novel applications. |
--format <type> |
markdown |
Emit markdown, HTML, or PPTX. Non-markdown formats require prior /ai-briefing:setup apply install-build-deps. |
--yes / -y |
Off |
Skip the pre-execution confirmation gate. Required for headless runs. |
Actions:
- Default: collect, deduplicate, rank, cite, and emit a briefing.
retro --meeting <N>: record acted/noted/skipped feedback for an archived briefing.
search "<query>": search archived briefing markdown and return cited matches.
Profile resolution
Files at .claude/ai-briefing/ form the default profile. Each
.claude/ai-briefing/<name>/ directory is a named profile. Selecting a named
profile is profile selection, not resolution of a *.local.* cascade layer.
Resolve the active profile in this order:
--profile <name> for this invocation.
- The rendered
${user_config.active_profile} value when it is non-empty.
default.
Require a 1-63 character lowercase-kebab profile name and reject reserved Windows device
names before constructing any profile path.
Resolve that value in the skill before launching tools. Explicitly pass the result to every
build subprocess; do not assume plugin configuration is inherited by an arbitrary shell:
AI_BRIEFING_PROFILE="$PROFILE" node "${CLAUDE_PLUGIN_DATA}/runtime/build/run.js"
Never ask the consumer to export the variable globally.
A profile may contain these team-tracked files. They are not a *.local.*
cascade overlay:
| Artifact |
Purpose |
sources.md |
Approved RSS/Atom feeds, official release pages, GitHub repositories, and user-supplied URLs. |
audience.md |
Optional stack/audience lens for impact annotations. |
brand.json |
Optional declarative deck brand file. |
Default run
- Parse and validate arguments. Reject unknown formats and malformed dates before any
collection. Resolve the selected profile and read
sources.md when present.
- Unless
--yes is present, show the timeframe, provider scope, source classes, selected
profile, and requested output format. Ask for confirmation before outbound collection.
- Search official vendor publications and GitHub releases first. Read configured feeds and
permitted user-supplied non-X URLs. Use reputable secondary reporting to fill gaps and
corroborate claims. Record source URL, publisher, publication date, and retrieval date.
Set an explicit timeout on every outbound request, and keep partial failures visible
instead of dropping the source silently.
- For every item, require at least one working source URL. Prefer the primary announcement;
label claims that remain secondary-only. Exclude content outside the requested window.
- Deduplicate by canonical URL and normalized event identity. Merge corroborating sources
into one item rather than repeating the same announcement.
- Categorize into provider buckets and rank by practical impact, availability, novelty,
source confidence, and relevance to
audience.md. Never invent details or silently turn
rumors into facts.
- Write the current markdown briefing. Every requested provider bucket appears in it,
including one the window produced no items for; say that the bucket is empty rather than
omitting it silently. Update the seen-item registry under the selected profile's
${CLAUDE_PLUGIN_DATA} state directory only after the markdown is emitted successfully.
Keep tracked profile configuration in the project; never write curated configuration into
plugin data. Re-running the same window is idempotent: merge by the same normalized event
identity step 5 deduplicates on
and do not emit duplicate items.
- For
--format html or --format slides, require the optional build tree installed by
/ai-briefing:setup apply install-build-deps. Run the staged build pipeline against the emitted
markdown with AI_BRIEFING_PROFILE="$PROFILE" set on the launched process. Playwright may
open only generated local HTML for PDF rendering and layout validation. Surface missing
prerequisites with the exact setup command; do not silently fall back to another browser
provider.
- Report collected, excluded, deduplicated, and secondary-only counts plus the output path.
Make warnings visible, including unreachable sources and missing optional build tooling.
Output contract
The markdown briefing contains:
- Run metadata: profile, window, retrieval time, and source classes used.
- Provider sections with HIGH, MEDIUM, and LOW tiers.
- Item title, concise evidence-backed summary, practical impact, publication date, and
source links.
- A visible caveats section for inaccessible sources, secondary-only claims, and gaps.
- An optional EXTRAS section when enabled.
Machine-local state and generated artifacts live under
${CLAUDE_PLUGIN_DATA}/<profile>/. Tracked source, audience, and brand configuration lives
under .claude/ai-briefing/[<profile>/] in the consumer repository.
Quality gates
- Every factual item has a source URL and date.
- Primary sources are preferred and clearly distinguished from secondary reporting.
- No automated X access occurs, including through browser tools or indirect DOM scripts.
- The same event appears once, with corroborating links attached.
- Missing dependencies and partial collection are visible; no black-box degradation.
- HTML/PDF browser use is local-render-only.
Reference index. Load on demand
| File |
Load when |
reference/audience-defaults.md |
Step 6 ranking, when no profile audience.md supplies the lens or a profile only partly overrides it. |
reference/build-pipeline.md |
Step 8, running the build: commands, the slides-data.js schema, and its prerequisite checks. |
reference/slide-generation.md |
Step 8 for --format slides, deciding slide order, split rules, and brand tokens. |
1---2name: generate-23description: Build a source-backed AI industry briefing from official vendor publications, configured RSS feeds, GitHub releases, reputable secondary reporting, and user-supplied URLs. Use when: 'ai briefing', 'ai news', 'what's new in AI', 'catch me up on AI', 'prep for AI meeting', 'AI roundup', or 'generate AI slides'.4---56## Variables78Arguments: `$ARGUMENTS`9Configured active profile: `${user_config.active_profile}`1011## Purpose1213Collect, deduplicate, rank, and present current AI-industry developments without depending14on organization-specific configuration. Markdown is the default output. HTML and PPTX are15explicit, optional outputs backed by the bundled deterministic build pipeline.1617## Source and access policy1819Use only interfaces that authorize automated access:20211. Official vendor blogs, documentation, changelogs, and release notes.222. GitHub release pages and repository APIs.233. RSS/Atom feeds listed by the selected profile.244. Reputable secondary reporting, corroborated by a primary source when practical.255. User-supplied public URLs and context.2627Automated X/Twitter collection is disabled. Do not crawl, scrape, scroll, navigate, fetch,28or extract X pages through browser automation, DOM scripts, unofficial endpoints, or Grok.29Do not refresh following graphs or profile metadata. X's current terms expressly prohibit30crawling or scraping without prior written consent: <https://x.com/en/tos>.3132If the user supplies an X URL, preserve it as user-provided citation metadata but do not33programmatically retrieve it. Ask for the relevant text when it is necessary, and seek a34non-X primary source for corroboration. This plugin does not configure a paid X API.3536Playwright is allowed only for deterministic rendering and inspection of locally generated37HTML/PDF artifacts. It is not a collection provider.3839## Arguments4041| Flag | Default | Effect |42|---|---|---|43| `--profile <name>` | Configured `active_profile`, then `default` | Select a named profile for this invocation. |44| `--since <timeframe>` | 14d | Accept `1d`, `3d`, `7d`, `14d`, `30d`, or an ISO date. |45| `--providers <list>` | All | Limit collection to comma-separated provider buckets. |46| `--extras` / `--no-extras` | On | Include or omit robotics, science, and novel applications. |47| `--format <type>` | `markdown` | Emit markdown, HTML, or PPTX. Non-markdown formats require prior `/ai-briefing:setup apply install-build-deps`. |48| `--yes` / `-y` | Off | Skip the pre-execution confirmation gate. Required for headless runs. |4950Actions:5152- Default: collect, deduplicate, rank, cite, and emit a briefing.53- `retro --meeting <N>`: record acted/noted/skipped feedback for an archived briefing.54- `search "<query>"`: search archived briefing markdown and return cited matches.5556## Profile resolution5758Files at `.claude/ai-briefing/` form the default profile. Each59`.claude/ai-briefing/<name>/` directory is a named profile. Selecting a named60profile is profile selection, not resolution of a `*.local.*` cascade layer.61Resolve the active profile in this order:62631. `--profile <name>` for this invocation.642. The rendered `${user_config.active_profile}` value when it is non-empty.653. `default`.6667Require a 1-63 character lowercase-kebab profile name and reject reserved Windows device68names before constructing any profile path.6970Resolve that value in the skill before launching tools. Explicitly pass the result to every71build subprocess; do not assume plugin configuration is inherited by an arbitrary shell:7273```bash74AI_BRIEFING_PROFILE="$PROFILE" node "${CLAUDE_PLUGIN_DATA}/runtime/build/run.js"75```7677Never ask the consumer to export the variable globally.7879A profile may contain these team-tracked files. They are not a `*.local.*`80cascade overlay:8182| Artifact | Purpose |83|---|---|84| `sources.md` | Approved RSS/Atom feeds, official release pages, GitHub repositories, and user-supplied URLs. |85| `audience.md` | Optional stack/audience lens for impact annotations. |86| `brand.json` | Optional declarative deck brand file. |8788## Default run89901. Parse and validate arguments. Reject unknown formats and malformed dates before any91 collection. Resolve the selected profile and read `sources.md` when present.922. Unless `--yes` is present, show the timeframe, provider scope, source classes, selected93 profile, and requested output format. Ask for confirmation before outbound collection.943. Search official vendor publications and GitHub releases first. Read configured feeds and95 permitted user-supplied non-X URLs. Use reputable secondary reporting to fill gaps and96 corroborate claims. Record source URL, publisher, publication date, and retrieval date.97 Set an explicit timeout on every outbound request, and keep partial failures visible98 instead of dropping the source silently.994. For every item, require at least one working source URL. Prefer the primary announcement;100 label claims that remain secondary-only. Exclude content outside the requested window.1015. Deduplicate by canonical URL and normalized event identity. Merge corroborating sources102 into one item rather than repeating the same announcement.1036. Categorize into provider buckets and rank by practical impact, availability, novelty,104 source confidence, and relevance to `audience.md`. Never invent details or silently turn105 rumors into facts.1067. Write the current markdown briefing. Every requested provider bucket appears in it,107 including one the window produced no items for; say that the bucket is empty rather than108 omitting it silently. Update the seen-item registry under the selected profile's109 `${CLAUDE_PLUGIN_DATA}` state directory only after the markdown is emitted successfully.110 Keep tracked profile configuration in the project; never write curated configuration into111 plugin data. Re-running the same window is idempotent: merge by the same normalized event112 identity step 5 deduplicates on113 and do not emit duplicate items.1148. For `--format html` or `--format slides`, require the optional build tree installed by115 `/ai-briefing:setup apply install-build-deps`. Run the staged build pipeline against the emitted116 markdown with `AI_BRIEFING_PROFILE="$PROFILE"` set on the launched process. Playwright may117 open only generated local HTML for PDF rendering and layout validation. Surface missing118 prerequisites with the exact setup command; do not silently fall back to another browser119 provider.1209. Report collected, excluded, deduplicated, and secondary-only counts plus the output path.121 Make warnings visible, including unreachable sources and missing optional build tooling.122123## Output contract124125The markdown briefing contains:126127- Run metadata: profile, window, retrieval time, and source classes used.128- Provider sections with HIGH, MEDIUM, and LOW tiers.129- Item title, concise evidence-backed summary, practical impact, publication date, and130 source links.131- A visible caveats section for inaccessible sources, secondary-only claims, and gaps.132- An optional EXTRAS section when enabled.133134Machine-local state and generated artifacts live under135`${CLAUDE_PLUGIN_DATA}/<profile>/`. Tracked source, audience, and brand configuration lives136under `.claude/ai-briefing/[<profile>/]` in the consumer repository.137138## Quality gates139140- Every factual item has a source URL and date.141- Primary sources are preferred and clearly distinguished from secondary reporting.142- No automated X access occurs, including through browser tools or indirect DOM scripts.143- The same event appears once, with corroborating links attached.144- Missing dependencies and partial collection are visible; no black-box degradation.145- HTML/PDF browser use is local-render-only.146147## Reference index. Load on demand148149| File | Load when |150|---|---|151| `reference/audience-defaults.md` | Step 6 ranking, when no profile `audience.md` supplies the lens or a profile only partly overrides it. |152| `reference/build-pipeline.md` | Step 8, running the build: commands, the `slides-data.js` schema, and its prerequisite checks. |153| `reference/slide-generation.md` | Step 8 for `--format slides`, deciding slide order, split rules, and brand tokens. |