learning-aggregator-ci
[Beta] CI-only learning aggregation workflow using gh-aw (GitHub Agentic Workflows). Scans .learnings/ files on a schedule, groups entries by pattern_key, identifies promotion-ready patterns, and posts a gap report as a PR or issue comment. Use when: you want automated cross-session pattern detection in CI/headless pipelines without interactive prompts. For interactive use, use learning-aggregator.
What this skill does
# Learning Aggregator CI
## Install
```bash
gh skill install pskoett/pskoett-skills learning-aggregator-ci
```
For interactive sessions, use:
```bash
gh skill install pskoett/pskoett-skills learning-aggregator
```
Fallback using the Agent Skills CLI:
```bash
npx skills add pskoett/pskoett-skills/skills/learning-aggregator-ci
npx skills add pskoett/pskoett-skills/skills/learning-aggregator
```
## Purpose
Runs the outer loop's **inspect** step in CI. Reads accumulated `.learnings/` files, groups entries by `pattern_key`, computes cross-session recurrence, and produces a ranked gap report — all without human interaction.
The interactive `learning-aggregator` skill is designed for in-session use where the user can review and act on findings immediately. This CI variant runs on a schedule (weekly, per-sprint, or on-demand) and posts its findings as a GitHub issue comment for async review.
## Context Limitation (Important)
CI agents do not have session context. They cannot see what the user is currently working on or what task area is relevant. The CI variant scans **all** `.learnings/` entries without relevance filtering. The gap report is comprehensive rather than targeted.
## Prerequisites
- GitHub Actions enabled on the repository
- `gh` CLI authenticated with repo access
- `gh-aw` extension installed (`gh extension install github/gh-aw`, v0.40.1+)
- `.learnings/` directory with structured entries from `self-improvement`
## CI Contract
Hard rules for headless execution:
1. **Read-only** — do not modify `.learnings/` files, project instruction files (CLAUDE.md, AGENTS.md, .github/copilot-instructions.md), or any repo files
2. **Headless** — no interactive prompts, no approval gates
3. **Structured output** — emit findings as YAML under `learning_aggregator_ci` key
4. **Single comment** — post one consolidated comment per run, not per finding
5. **Deterministic** — same `.learnings/` state produces the same gap report
## Authoring Workflow (gh-aw)
1. Copy `references/workflow-example.md` into `.github/workflows/learning-aggregator-ci.md`
2. Customize the schedule for your cadence (supports fuzzy schedules like `weekly on mondays`)
3. Validate: `gh aw compile` (optionally add `--actionlint --zizmor` for full security scan)
4. Push to enable
### Persistence and Chaining
- **`cache-memory:`** stores aggregation state (pattern groups, recurrence counts) across runs. Survives up to 90 days in Actions cache. Avoids re-scanning unchanged entries on every run.
- **`call-workflow:`** triggers `eval-creator-ci` after aggregation completes to create evals from newly promoted patterns. Compile-time fan-out with proper dependency wiring.
- **`upload-artifact:`** persists the gap report YAML for consumption by downstream workflows or human review.
## Workflow Rules
The CI agent follows these rules in order:
1. Read all files in `.learnings/`: `LEARNINGS.md`, `ERRORS.md`, `FEATURE_REQUESTS.md`
2. Parse each entry's metadata: `Pattern-Key`, `Recurrence-Count`, `First-Seen`, `Last-Seen`, `Priority`, `Status`, `Area`, `Related Files`, `Tags`
3. Group entries by `Pattern-Key` (exact match only — no fuzzy grouping in CI)
4. For each group: sum recurrences, count distinct tasks, compute time window, collect evidence
5. Flag entries without `Pattern-Key` as ungrouped
6. Classify each group's gap type: knowledge gap, tool gap, skill gap, ambiguity, or reasoning failure
7. Rank groups by: promotion-ready first, then approaching threshold, then by priority (critical > high > medium > low)
8. Emit structured YAML under key `learning_aggregator_ci`
9. Post gap report as a comment on the triggering issue or as a new issue if running on schedule
10. Do not modify repository files
## Output Schema
```yaml
learning_aggregator_ci:
version: "0.1.0"
source:
run_id: "<workflow run ID>"
trigger: "schedule | workflow_dispatch | issue_comment"
scan_date: "YYYY-MM-DD"
scan:
entries_total: 42
entries_with_pattern_key: 35
entries_ungrouped: 7
patterns_found: 18
promotion_ready: 3
approaching_threshold: 5
promotion_ready:
- pattern_key: "harden.input_validation"
recurrence_count: 5
distinct_tasks: 3
window_days: 21
priority: "high"
gap_type: "knowledge_gap"
area: "backend"
evidence:
- "LRN-20260301-001: Missing bounds check on pagination params"
- "ERR-20260308-002: Unconstrained string length caused OOM"
- "LRN-20260315-003: API params not validated before DB query"
recommended_action: "Add to project instruction files: Always validate and bound-check external inputs before use"
eval_candidate: true
approaching:
- pattern_key: "simplify.dead_code"
recurrence_count: 2
distinct_tasks: 1
priority: "low"
needs: "1 more distinct task"
ungrouped:
- id: "LRN-20260320-005"
summary: "Discovered undocumented rate limit on external API"
recommendation: "Assign pattern_key for future tracking"
stale:
- pattern_key: "harden.error_handling"
last_seen: "2025-12-01"
recommendation: "Dismiss — not seen in 90+ days"
summary:
promotion_ready_total: 3
approaching_total: 5
ungrouped_total: 7
stale_total: 1
followup_required: true
```
## Recommended Outputs
| Output | Destination | Content |
|--------|------------|---------|
| Gap report | Issue comment or new issue | Human-readable summary with promotion candidates and evidence |
| YAML artifact | Workflow artifact | Machine-readable `learning_aggregator_ci` payload |
| Check annotation | Check run summary | Count of promotion-ready and approaching patterns |
## Trigger Configuration
**Recommended: weekly schedule + manual dispatch**
```yaml
on:
schedule:
- cron: '0 9 * * 1' # Monday 9am UTC
workflow_dispatch:
issue_comment:
types: [created]
```
The schedule ensures regular outer-loop cadence. Manual dispatch allows on-demand runs after incidents or sprints. Issue comment trigger allows `/aggregate-learnings` commands.
## Integration with Other Skills
### Upstream (feeds from)
- `self-improvement` and `self-improvement-ci` — produce `.learnings/` entries
- `simplify-and-harden-ci` — produces `learning_loop.candidates` consumed by self-improvement-ci
### Downstream (feeds into)
- **harness-updater** (interactive) — takes promotion-ready patterns from the gap report and applies them
- **eval-creator-ci** — takes eval candidates and creates permanent test cases
- **Human review** — gap report posted as issue comment for team triage
### Data Flow
```
self-improvement → .learnings/*.md
↓
learning-aggregator-ci (scheduled)
↓
gap report (issue comment + artifact)
↓
harness-updater (interactive, human-gated)
↓
eval-creator-ci (creates evals from promoted patterns)
```
## Differences from Interactive Version
| Aspect | Interactive (`learning-aggregator`) | CI (`learning-aggregator-ci`) |
|--------|------|------|
| Trigger | Manual or session-start | Scheduled cron or workflow_dispatch |
| Relevance filter | Filters by current task area | Scans all entries (no task context) |
| Grouping | Conservative + area/tag matching | Pattern-key exact match only |
| Output | In-session gap report | Issue comment + YAML artifact |
| Human interaction | User reviews inline | Async review via GitHub |
| Scope | Current session context | Full .learnings/ history |
Related in Cloud & DevOps
appbuilder-action-scaffolder
IncludedCreate, implement, deploy, and debug Adobe Runtime actions with consistent layout, validation, and error handling. Use this skill whenever the user needs to add actions to an App Builder project, understand action structure (params, response format, web/raw actions), configure actions in the manifest, use App Builder SDKs (State, Files, Events, database), deploy and invoke actions via CLI, debug action issues, or implement patterns such as webhook receivers, custom event providers, journaling consumers, large payload redirects, action sequence pipelines, and Asset Compute workers. Also trigger when users mention serverless functions in Adobe context, action logging, IMS authentication for actions, or cron-style scheduled actions.
orchestrating-datacloud
IncludedSalesforce Data Cloud product orchestrator for connect→prepare→harmonize→segment→act workflows. Use this skill when the user needs a multi-step Data Cloud pipeline, cross-phase troubleshooting, or data space and data kit management. TRIGGER when: user needs a multi-step Data Cloud pipeline, asks to set up or troubleshoot Data Cloud across phases, manages data spaces or data kits, or wants a cross-phase sf data360 workflow. DO NOT TRIGGER when: work is isolated to a single phase (use the matching phase-specific skill), the task is STDM/session tracing/parquet telemetry (use observing-agentforce), standard CRM SOQL (use querying-soql), or Apex implementation (use generating-apex).
github-project-automation
IncludedAutomate GitHub repository setup with CI/CD workflows, issue templates, Dependabot, and CodeQL security scanning. Includes 12 production-tested workflows and prevents 18 errors: YAML syntax, action pinning, and configuration. Use when: setting up GitHub Actions CI/CD, creating issue/PR templates, enabling Dependabot or CodeQL scanning, deploying to Cloudflare Workers, implementing matrix testing, or troubleshooting YAML indentation, action version pinning, secrets syntax, runner versions, or CodeQL configuration. Keywords: github actions, github workflow, ci/cd, issue templates, pull request templates, dependabot, codeql, security scanning, yaml syntax, github automation, repository setup, workflow templates, github actions matrix, secrets management, branch protection, codeowners, github projects, continuous integration, continuous deployment, workflow syntax error, action version pinning, runner version, github context, yaml indentation error
sf-datacloud
IncludedSalesforce Data Cloud product orchestrator for connect→prepare→harmonize→segment→act workflows. TRIGGER when: user needs a multi-step Data Cloud pipeline, asks to set up or troubleshoot Data Cloud across phases, manages data spaces or data kits, or wants a cross-phase `sf data360` workflow. DO NOT TRIGGER when: work is isolated to a single phase (use the matching sf-datacloud-* skill), the task is STDM/session tracing/parquet telemetry (use sf-ai-agentforce-observability), standard CRM SOQL (use sf-soql), or Apex implementation (use sf-apex).
fabric-cli
IncludedUse this skill for Fabric.so CLI workflows with the `fabric` terminal command: diagnose/install/login, search or browse a Fabric library, save notes/links/files, create folders, ask the Fabric AI assistant, manage tasks/workspaces, generate shell completion, check subscription usage, produce JSON output, and use Fabric as persistent agent memory. Do not use for Microsoft Fabric/Azure/Power BI `fab`, Daniel Miessler's Fabric framework, Python Fabric SSH, Fabric.js, or textile/fashion fabric.
lark
IncludedLark/Feishu CLI skills: lark-cli operations for docs, markdown, sheets, base, calendar, im, mail, task, okr, drive, wiki, slides, whiteboard, apps, approval, attendance, contact, vc, minutes, event. Use when the user needs to operate Lark/Feishu resources via lark-cli, send messages, manage documents, spreadsheets, calendars, tasks, OKRs, deploy web pages, or any Feishu/Lark workspace operations.