Track source lineage, detect changes in input documents and URLs, and cascade refresh through the feature-proposition-solution chain. Use whenever the user mentions "lineage", "source lineage", "what sources", "what changed", "refresh stale", "source registry", "check sources", "which documents fed", "trace back to source", "show dependencies", "what's affected by", "stale sources", "source drift", "cascade refresh", "where did this come from", "re-upload", or wants to understand or act on the relationship between input sources and portfolio entities.
From cogni-portfolionpx claudepluginhub cogni-work/insight-wave --plugin cogni-portfolioThis skill is limited to using the following tools:
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Builds 3-5 year financial models for startups with cohort revenue projections, cost structures, cash flow, headcount plans, burn rate, runway, and scenario analysis.
Track input sources, detect changes, and guide refresh cascades through the portfolio entity chain.
Portfolio entities (features, propositions, solutions) are derived from input sources — uploaded documents, web research URLs, and TIPS enrichment. When those sources change (a document is re-uploaded, a URL's content changes), downstream entities become stale. This skill manages the full lineage lifecycle:
The source registry (source-registry.json) is the central manifest. It tracks every input source, its SHA-256 fingerprint, and which entities it created. The portfolio-ingest skill creates registry entries automatically; this skill manages the registry lifecycle afterward.
portfolio.json must exist)source-registry.json (created automatically by portfolio-ingest or via the status mode of this skill)Detect the user's intent and route to the appropriate mode. If ambiguous, start with Status to orient.
Triggers: "lineage status", "source status", "show sources", "lineage overview"
Find the active project (same discovery as portfolio-resume).
Run the source-registry script:
bash $CLAUDE_PLUGIN_ROOT/scripts/source-registry.sh "<project-dir>" status
If no registry exists, offer to create one:
bash $CLAUDE_PLUGIN_ROOT/scripts/source-registry.sh "<project-dir>" initsource_file fields on entities and offer to backfill registry entries from themPresent a summary table:
| Metric | Value |
|---|---|
| Document sources | N |
| URL sources | N |
| Stale sources | N |
| Tracked entities | N / total |
| Untracked entities | N |
If untracked entities exist (entities with no source_refs and no registry link), list them and offer to backfill by scanning source_file fields.
If stale sources exist, recommend running Check mode or Refresh mode.
Triggers: "check sources", "what changed", "detect drift", "source check"
Find the active project and verify registry exists.
Run document check:
bash $CLAUDE_PLUGIN_ROOT/scripts/source-registry.sh "<project-dir>" check-docs
Present findings in three groups:
Changed documents (re-uploaded with different content):
| Document | Entities Affected | Context Entries |
|---|---|---|
| pricing-2026.pdf | features/cloud-monitoring, products/cloud-platform | pricing-2026--001, pricing-2026--002 |
New uploads (never ingested):
portfolio-ingestMissing sources (registered but file not found):
For changed documents: ask the user whether to:
stale and flag all linked entities with lineage_statusportfolio-ingest to re-process the changed documentsFor URL source checking (only when user explicitly requests):
portfolio-verify for changed URLsBlueprint drift check: For each product with a delivery_blueprint, compare blueprint_version against blueprint_version on all solutions that reference it via blueprint_ref. Report drifted solutions:
Blueprint drift (solutions generated from an older blueprint version):
| Product | Blueprint v | Drifted Solutions |
|---|---|---|
| cloud-platform | 3 | cloud-monitoring--mid-market (v1), sovereign-cloud--energy-de (v2) |
Recommend selective regeneration via the solutions skill. Blueprint drift is a distinct staleness path from document changes — it means the delivery pattern was updated but affected solutions weren't regenerated.
Triggers: "trace {entity}", "where did X come from", "what sources feed X", "lineage of X"
source_refs field. If absent, fall back to source_file and match against registry entries by filename.Source: pricing-strategy-2025.pdf (doc--pricing-strategy-2025, current)
+-- features/cloud-monitoring
| +-- propositions/cloud-monitoring--mid-market-saas-dach
| | +-- solutions/cloud-monitoring--mid-market-saas-dach
| | +-- competitors/cloud-monitoring--mid-market-saas-dach
| +-- propositions/cloud-monitoring--enterprise-dach
+-- context/pricing-strategy-2025--001
+-- context/pricing-strategy-2025--002
Triggers: "what's affected by X", "impact of changing X", "blast radius", "if I update X"
bash $CLAUDE_PLUGIN_ROOT/scripts/source-registry.sh "<project-dir>" staleness
Triggers: "refresh stale", "cascade refresh", "fix stale entities", "update from sources"
Find all stale entities by running:
bash $CLAUDE_PLUGIN_ROOT/scripts/source-registry.sh "<project-dir>" staleness
If no stale entities, report "All entities are current" and exit.
Group stale entities by refresh layer (dependency order):
Layer 1 — Features (must refresh first, as propositions depend on them):
features skill to review and update these N features"Layer 2 — Propositions (refresh after features are current):
propositions skill to regenerate messaging for these N pairs"Layer 3 — Solutions (refresh after propositions are current):
solutions skill to update pricing and implementation plans"Ask whether to re-ingest first: if the staleness was caused by a changed document, recommend running portfolio-ingest before refreshing entities, so the new document content informs the refresh.
After the user completes each layer (by running the appropriate skill), offer to:
lineage_status on refreshed entities (remove the field from their JSON)current with new fingerprint)After all layers are refreshed, confirm: "All N entities have been refreshed. Source registry is current."
When a project has existing entities with source_file fields but no source-registry.json, this skill can reconstruct the registry:
products/, features/, markets/ for source_file fieldssource_file fieldsuploads/processed/ — if so, compute its hashsource-registry.json with all discovered sourcessource_refs arrays on entities (ask user first)source_lineage in health-check output.Read portfolio.json in the project root. If a language field is present, communicate with the user in that language (status messages, instructions, recommendations, questions). Technical terms, skill names, and CLI commands remain in English. If no language field is present, default to English.