Imported from haldco-io/strategic-agentic-architecture (
plugins/strategic-agentic-architecture/skills/portfolio-review/SKILL.md). Install upstream withnpx skills add haldco-io/strategic-agentic-architecture --skill portfolio-review. Copyright stays with the author.
Portfolio-Review
Purpose & position in the engagement
Diversified companies destroy value not by picking bad businesses but by funding them all — capital, talent, and attention drift to the units that shout loudest or carry the CEO's legacy, not to where a dollar earns its cost. This skill answers one question: is the portfolio's capital, talent, and management attention allocated to where value is created and can grow, or is it anchored by inertia and sunk cost — and what specifically moves? It exists to move resources, not to grade units; a review that ends in a description has failed. It produces the Portfolio Assessment + Resource Shifts artifact: an economic-profit-and-position table across the decision-relevant units, a value-trap screen, an explicit fund / hold / fix / harvest / exit call per unit with the capital and talent shifts quantified, and the total portfolio value delta versus the do-nothing allocation. It consumes the Business Cases (skill 10) for the units and moves under review and pulls the profit-pool trajectory from the Profit Pool Map (skill 07) where one exists; it feeds initiative-prioritization (skill 13). Run degraded per §10 when an upstream artifact is missing, and keep the two modes distinct. A missing upstream ARTIFACT: absent Business Cases → draft minimal per-unit economics from whatever P&L exists and label the set with the canonical flag DEGRADED — gap: 10 (business-case); absent Profit Pool Map → score attractiveness on available market data and flag DEGRADED — gap: 07 (profit-pool-analysis). A missing client FACT (a unit's invested-capital figure, a tax rate) is the other mode: estimate and label "model estimate — unverified" with a range. The two flags are not interchangeable; do not rank a portfolio on numbers you invented and left unlabeled. Re-anchor obligation (binding): when the missing producer later runs, a named owner reconciles every proxy figure against the real artifact via a governed restatement (restated figures shown beside the proxy, arithmetic reproducible) and files a pointer amendment in this artifact and every superseded downstream one, so no future reader meets stale figures unwarned; if the producer never runs, the obligation closes as "producer never ran — proxy remains labeled."
Modes: match the ceremony to the stakes
Pick the mode before starting; running a full board-grade reallocation review on a "which two units should we look at first" question is its own failure.
- Full review (default for capital-allocation decisions, board portfolio reviews, activist defense, post-merger rationalization): all nine workflow steps, 4–5 page artifact with the EP-and-position table, value-trap screen, resource-productivity cut, quantified capital and talent shifts, portfolio value delta, interdependency map, and falsification pass.
- Quick screen (user wants a same-day read on where value concentrates and which units are traps): Steps 1, 2, 3, 4, and 6 only — the day-1 hypothesis, the unit economics with EP, an honest position read, the value-trap screen (Step 4, which the mode's own kill mandates), and a directional fund/fix/harvest call per unit — plus the mode-adjusted kills. Output is a one-page EP-and-position table with a one-line disposition per unit, visibly labeled "screen — EP ranking and directional calls, shifts not sized, not reconciled to Business Cases." The EP requirement and the provenance kill hold at full strength; a screen that ranks on margin or growth is not a screen, it is the error this skill exists to prevent. Offer the full review if the stakes justify it.
- Reallocation refresh (a Portfolio Assessment already exists; new Business Case data, a new period, or a completed fix milestone): Steps 2 (re-run the EP table and every sum), 4, 6, 7, and 9 — update the economics, re-screen the traps (Step 4, so a prior trap flag is re-tested rather than silently dropped), re-cut the shifts, re-run the value delta, and re-test whether last cycle's fix/harvest calls held. Keep the follow-through and courage tests at full strength; refreshes are where reallocation quietly reverts to inertia.
Mode-adjusted kill sets are defined in references/red-team.md; a screen that escapes all self-review fails the authoring standard.
Inputs required
Before reviewing, establish five things. If any is missing, elicit it — do not guess silently.
- The Business Cases (skill 10) for the units and moves under review: per-unit revenue, operating profit, invested capital, and the NPV/sensitivity of any pending move. Without them, draft minimal per-unit economics from whatever P&L and balance-sheet data exist, source every figure, and label the set with the canonical flag DEGRADED — gap: 10 (business-case) carrying the §10 re-anchor obligation (a named owner reconciles the proxy when skill 10 runs) — the EP ranking is only as honest as its capital numbers. A single missing fact inside an otherwise-present Business Case is the other mode: label that one number "model estimate — unverified" with a range, not the DEGRADED flag.
- The decision at stake. What actually gets reallocated on the strength of this review — next year's growth-capital budget, the M&A pipeline, the top-50 leadership slots, board agenda time, or a divestiture list? The decision fixes the unit of analysis and which units get the deep treatment. A portfolio review with no reallocation attached is an annual-report appendix.
- The decision-maker and their constraints. Who signs the capital reallocation, by when, and what will they refuse to move (the founder's original business, a unit tied to a debt covenant, a politically protected division)? Sacred cows belong in the frame, because the courage test turns on them.
- The unit boundaries and their economics. How the company defines its units today, and whether each has separable capital and a standalone P&L. If reported units bury the variation (an integrated segment mixing a value creator and a value destroyer), re-cut to where reallocation decisions actually get made — see Step 1.
- The capital cost basis. The corporate WACC and whether unit-level risk differs enough to warrant unit-adjusted hurdles. A single hurdle applied silently across units of clearly different risk is a ranking error, not a simplification.
Elicitation questions when inputs are missing:
- "What decision does this review feed — what pool of capital, talent, or attention actually gets reallocated, and who signs it off?"
- "For each unit: revenue, operating profit, and the invested capital it sits on — where do those numbers come from?"
- "Which unit will leadership refuse to touch no matter what the numbers say, and why?"
- "Do the reported segments each have their own capital and P&L, or do any of them mix businesses that should be judged separately?"
- "What's the cost of capital, and do any units carry enough extra risk to deserve a higher hurdle?"
Workflow
Step 1 — State the day-1 hypothesis, then fix the unit of analysis
Before any ranking, write a two-line day-1 hypothesis: "We believe the portfolio is [mis/well]-allocated — [a minority of units earn the economic profit while a growing, high-share unit destroys it / capital already tracks value]; reallocating [the specific resource] toward [the EP earners] creates [$X] without new capital. Killed if [named evidence — EP is evenly spread with no long tail, or the apparent value trap's negative EP is a transient investment phase with a dated ROIC-recovery path]." It must be falsifiable by the analysis itself and it targets the deep work; the final step returns an explicit confirmed/killed verdict. A review that never tests its own prior is a confirmation exercise dressed as rigor.
Then fix the unit of analysis — business units, product lines, geographies, customer segments, or initiatives — by one rule: choose the level at which reallocation decisions actually get made and each unit has consistent, separable economics (its own revenue, its own invested capital, a plausible standalone owner). Reported segments are a starting point, not the answer: if a segment mixes a value creator and a value destroyer, their blended EP hides exactly the variation the review exists to find — re-cut and state the allocation rule for any shared capital. Output: the unit list with, for each, why it is a legitimate unit of reallocation. Quality check: a "unit" whose capital cannot be separated from its neighbors is a reporting convenience, not a portfolio unit — merge or re-cut it before ranking anything.
Step 2 — Build the economic-profit-and-position table
For each unit, compute economic profit, not margin or growth: EP = NOPAT − invested capital × WACC, where NOPAT = operating profit × (1 − tax rate), equivalently EP = (ROIC − WACC) × invested capital. Rank units on EP dollars and on EP per dollar of capital (the ROIC−WACC spread), because a big unit with a thin positive spread and a small unit with a fat spread demand opposite decisions. Use the unit's risk-adjusted WACC where unit risk clearly differs (a venture-stage adjacency does not earn the same hurdle as a mature cash business); a single corporate hurdle applied across dissimilar-risk units silently overstates the risky ones — state which basis you used and why. The margin basis, the discounting basis (WACC/hurdle and real-vs-nominal), and the drop-through/flow-through treatment are engagement-wide conventions owned by business-case (skill 10): cite skill 10's ONE versioned Convention Table by row ID and quote the operative value (for example "[Convention Table C3 = 9.0% nominal corporate hurdle; skill 10, v_]"), rather than restating a convention locally — a figure resting on a convention that lives in the table but is hardcoded here instead of cited is a kill. Any risk premium you layer on the ratified base hurdle is your own analyst-set decision rule, not a convention: submit it to skill 03 as a register candidate (Step 6) and flag it for skill 10's ratification. Alongside EP, place the two positioning axes done honestly (Step 3's framework): market attractiveness and competitive position. Source every number to a Business Case cell or label it an assumption with a range; flag any load-bearing capital figure resting on one source. Output: the EP-and-position table. Quality check: recompute every row (NOPAT − IC × WACC = EP) and confirm unit EPs sum to the portfolio EP before showing anyone — an arithmetic error in a reallocation table is unrecoverable with a board.
Step 3 — Read position honestly, and choose the framework by decision rule
Attractiveness × position is the standard portfolio grid, and used lazily it manufactures value traps. Follow the framework decision rules in references/methodology.md:
- Attractiveness is not just current market size or growth — it is the profit-pool trajectory (pull it from the Profit Pool Map, skill 07, where one exists): where the pool is moving, its capital intensity, and competitive intensity. A market growing at 8% whose pool is being competed away is not attractive.
- Competitive position is not just relative share — it is cost position, right-to-win, and whether the share was earned or bought. Share is a proxy that breaks when scale does not confer advantage.
- BCG growth-share (growth × relative share) informs the cash-flow role of a unit and is useful as communication shorthand after EP is checked — never as the primary allocator. It misleads whenever it matters most: share is a proxy for advantage, cash generation is not value creation, and it ignores capital intensity entirely, so it crowns a capital-hungry high-growth high-share unit a "star" precisely when that unit is destroying economic profit. Do not allocate on it.
- GE-McKinsey nine-box (multi-factor attractiveness × multi-factor position) is the richer default screen because both axes are composites, not single proxies — but it is still a qualitative 2D grid that will bless a value trap unless EP is overlaid on it. Score each axis against explicit anchors (see
references/methodology.md), not by feel. - When neither fits: single-business portfolios, or portfolios so interdependent the units are not separable, are not grid problems — use a value-driver tree or a real-options frame instead, and say so.
Output: attractiveness and position scores per unit with the anchors used, and the framework choice justified. Quality check: overlay EP on the grid and name every unit where the grid's zone and the EP sign disagree — those disagreements are the review's whole point.
Step 4 — Screen for value traps
Run the value-trap screen explicitly on every unit the grid rates attractive or well-positioned: is EP negative (or a spread below its own risk hurdle) despite growth, share, or accounting profit? A growing, high-share, profitable-on-the-P&L unit with negative EP is the characteristic value trap — the grid says fund it, the economics say it is eating capital. Do not resolve the trap by faith in future scale; require either a dated ROIC-recovery path (integration milestones, asset-turn targets) that closes the ROIC−WACC gap, or a fix/exit call. Output: the trap list with, for each, why the grid and EP disagree and what the recovery burden is. Quality check: if no unit trips the screen, confirm that is real (capital already tracks value — a legitimate finding) rather than a screen that was never run.
Step 5 — Cut resource productivity across the three scarce resources
Value is created per unit of three scarce resources, and capital is only the first. Compute or estimate each unit's return on: capital (EP per dollar of invested capital), scarce talent (EP per senior leadership slot, or per unit of the company's genuinely constrained skill), and management attention (EP per unit of board/executive agenda time — proxy it, do not fake precision). The recurring finding: a few units earn the returns while a long tail consumes capital, talent, and attention for little or negative EP. Output: the resource-productivity table naming the earners and the tail. Quality check: the three cuts often disagree (a unit thin on capital productivity may be starving a talent-productive gem) — where they disagree, say which resource is actually binding for this decision.
Step 6 — Convert to explicit resource shifts
This is the output the whole review exists for. Assign each unit one call and quantify the move:
- Fund — positive spread, room to grow, right-to-win: increase capital and talent, name the amounts.
- Hold — positive spread, low growth or mature position: defend, fund maintenance only, harvest excess cash for redeployment.
- Fix — negative or sub-hurdle EP but scale/position too valuable to abandon reflexively: freeze growth capital, put the ROIC-recovery on a dated milestone leash, and pre-commit to convert to hold if fixed or exit if the milestone is missed.
- Harvest — marginal EP in a declining market: stop growth investment, run for cash, release capital, prepare exit.
- Exit — persistent negative EP with no recovery path and no strategic interdependency that survives Step 8: divest, and value the freed capital at its redeployment return, not its book.
Then build the two shift tables — capital (do-nothing allocation of the reallocatable pool versus proposed, summing to the same total) and talent (senior slots moved, netting to zero unless headcount changes) — and compute the portfolio value delta versus do-nothing: value each allocation at the unit's marginal return on new capital (not its average ROIC — new capital reverts toward the market, label the marginal assumption), sum the EP created under each allocation, and take the difference. Capitalize the annual EP delta at the cost of capital for an enterprise-value figure. Respect absorptive capacity: a unit cannot productively absorb capital far above its base in one year — phase the ramp and park the interim, or the marginal-ROIC assumption is fiction. Output: the disposition table plus the two shift tables plus the value delta with its arithmetic shown. Quality check: the delta must be reproducible from the stated marginal spreads and allocations, and the proposed allocation must sum to the same reallocatable total as do-nothing — a "value delta" that quietly spends more capital is not a reallocation, it is a request for funding.
Register candidates (§11). Every analyst-set decision rule this review relies on — the value-trap threshold (EP < 0 or a spread below the unit's risk hurdle), the marginal-ROIC haircut on new capital, the absorptive-capacity cap fraction, the EP-stream capitalization rate, each fix/exit milestone read-count, and any unit risk premium layered on the base hurdle — is submitted to assumption-audit (skill 03) as a register candidate at handoff. Skill 03 is the SOLE writer of the Assumption Register; portfolio-review never writes rows itself. Until a candidate is absorbed, cite it provisionally as "candidate [name], handed in Portfolio Assessment + Resource Shifts, row ID pending." Conventions that live in skill 10's Convention Table (margin basis, discounting, drop-through) are NOT register candidates — cite the table for those.
Calendar feasibility of every dated trigger (§12 — two prongs, timing and cleanliness). A FIX leash, a convert-or-exit milestone, or an option expiry names a date by which a recovery must be read, and a read that cannot land by its own gate — or that lands on a distorted number — is a design defect, not a plan. Timing: test each dated trigger with the anchored additive formula readable(N) = [first clean post-event period close] + (N−1) × cadence + latency ≤ gate date, where a clean read is a full measurement period that begins after the recovery actions complete (a period straddling them is contaminated, not clean), and a "two consecutive periods at hurdle" trigger adds its worst-case detection lag. Cleanliness (the second prong — a correctly-timed read can still be contaminated): even a period that begins after the recovery actions is not clean if a known one-time exogenous event lands inside its window and would materially distort the ROIC/EP metric being read — a one-off asset-sale gain or working-capital release flattering ROIC, a stimulus or mega-event quarter inflating demand, a one-off duty recovery or tax credit, a launch-timing spike, a non-recurring cost reversal. Such a print is contaminated even when correctly timed, so NAME any exogenous event landing in a trigger's measurement window; where one lands, apply the cleanliness disposition — adjust the read for the event (strip the one-off and show the bridge), require a confirming clean period before the convert/exit call fires, or explicitly discount the print (labeled) — never treat the contaminated quarter as the clean recovery signal. If a trigger's read cannot land by its gate, apply one of the four §12 dispositions — re-date the gate, reduce the read-count (stating the downgrade), substitute a faster proxy (stating the downgrade), or restructure the commitment (shrink the tranche to what an evidence-free call justifies, or record an explicitly evidence-free decision, labeled; route back to business-case/strategic-option-generation for restaging) — never quietly assume the read arrives in time or that a distorted read is the recovery.
Step 7 — Map interdependencies before you cut
A pure-EP cut wrongly kills the unit that loses money on its own P&L but anchors the ecosystem — the shared platform whose cost would reload onto a sibling, the cash cow whose installed base feeds a service annuity, the subscale adjacency that buys a strategic option or channel access. Test each fix/harvest/exit call against three interdependencies: shared capabilities (does another unit depend on this one's platform, channel, or talent?), cross-subsidies (does this unit's price or presence enable a sibling's economics?), and strategic options (does keeping it buy a real, dated option on a future pool?). But guard the gate: an interdependency justifies keeping a loser only if it is sized — quantify the cost that reloads onto siblings on exit, or the option's value and its expiry — because "strategic" is where every value destroyer hides. Output: for each retained loser, the sized interdependency that retains it and the trigger that would override it. Quality check: if every proposed exit turns out to be "strategic," the gate is broken — an interdependency claim without a number is an excuse, not a reason.
Step 8 — Apply the courage test
Name explicitly what management will resist moving and why, because the reallocations that create the most value are usually the ones blocked by sunk cost, legacy, and politics — the value trap is often the CEO's acquisition or the founder's original business. State, per contested call, who will resist, the real reason (career, legacy, covenant, headcount), and the mechanism that could break the inertia (a zero-based growth budget, EP-linked incentives, board-level capital governance). Output: the resistance map. Quality check: a review whose recommendations everyone will happily accept has probably recommended nothing that matters — if nothing here is politically hard, re-examine whether the shifts are real.
Step 9 — Falsification pass
Argue that the recommended shift is wrong. Complete these with real content, not straw men:
- "The strongest case the reallocation destroys value is..." — check mean reversion (the fund-target's fat spread may revert as competition enters — does the marginal-ROIC assumption already haircut it, and does the delta survive if it reverts further?).
- "The unit we're harvesting or exiting whose option value we may be killing is..." — check the harvested unit's real option (a customer relationship, IP, or channel that could re-rate) and the fixed unit's transient-investment defense.
- "The risk our shift concentrates is..." — check correlated risk (does funding the EP earners load the portfolio onto a single thesis or customer set, so diversification just fell?).
Then state the reference-class base rate on reallocation follow-through: firms reallocate capital stickily, so the plan's realism depends on a governance mechanism, not intent — attach one or the shift will revert. If any answer materially moves a call, revise before delivering; only residual, non-material doubts survive into the artifact's risk section.
Close with the verdict on the Step 1 day-1 hypothesis: confirmed or killed, explicitly, citing the EP row or trap that decided it. A killed hypothesis is a good outcome — say what replaced it.
Quality bar
Output is ready when: a day-1 hypothesis was stated before the analysis and the artifact returns an explicit confirmed/killed verdict; every unit is ranked on economic profit, not margin or growth, with the arithmetic reproducing (NOPAT − IC × WACC = EP) and unit EPs summing to the portfolio EP; unit-risk differences in the hurdle are either reflected or explicitly waived with a reason; every framework invoked carries a decision rule and a when-NOT-to-use, and EP is overlaid on the grid; every unit the grid rates attractive is run through the value-trap screen; the output is a fund/hold/fix/harvest/exit call per unit with capital and talent shifts quantified and a portfolio value delta versus do-nothing that reproduces from the stated marginal spreads; retained losers are held by a sized interdependency, not the word "strategic"; the courage test names what will be resisted and why; the falsification pass has genuinely tested mean reversion, option value, and correlated risk; every convention it consumes (margin basis, discounting, drop-through) is cited from skill 10's Convention Table by row ID and operative value, not restated locally; every analyst-set decision rule (value-trap threshold, marginal-ROIC haircut, absorptive-capacity cap, capitalization rate, milestone read-counts) is submitted to skill 03 as a register candidate in provisional-citation form; every dated trigger passes the §12 feasibility test on both prongs — timing (readable(N) ≤ gate date) and cleanliness (its measurement window is free of a known one-time exogenous event — an asset-sale gain, stimulus/mega-event quarter, one-off duty recovery, cost reversal — that would distort the ROIC/EP read, else the read is adjusted, confirmed on a clean period, or explicitly discounted) — or carries one of the stated dispositions; and a missing upstream artifact is run degraded under the canonical DEGRADED — gap: NN (skill-name) flag with its re-anchor obligation, never blended with a missing-fact estimate.
Output format
Default deliverable is the Portfolio Assessment + Resource Shifts artifact — full template in references/templates.md. Structure: (1) day-1 hypothesis and unit-of-analysis definition; (2) EP-and-position table with per-cell sources; (3) framework choice and the grid with EP overlaid; (4) value-trap screen; (5) resource-productivity cut across capital, talent, attention; (6) disposition table plus capital and talent shift tables plus the portfolio value delta; (7) interdependency map with sized retentions; (8) courage test / resistance map; (9) risks and the hypothesis verdict from the falsification pass. Keep it to 4–5 pages; the tables carry the argument. In quick-screen mode, deliver the one-page version (Template 2) instead.
Red-team gate
Before delivering, run the full adversarial checklist in references/red-team.md against the draft and fix every failure — it is a runtime gate, not documentation. Automatic kills (deliver nothing that violates these): no day-1 hypothesis stated before the analysis, or no explicit confirmed/killed verdict at delivery; any unit ranked or classified on margin, growth, or revenue with no economic-profit view; EP computed on pre-tax profit, or a single corporate hurdle applied across clearly dissimilar-risk units with no stated basis; unit EPs that do not sum to the portfolio EP, or any row where NOPAT − IC × WACC ≠ the stated EP; a framework (BCG growth-share, GE-McKinsey nine-box) invoked without a decision rule and a when-NOT-to-use, or a grid presented without EP overlaid; any attractive/high-share unit not run through the value-trap screen; a "review" that produces no fund/hold/fix/harvest/exit call per unit, or dispositions with no quantified capital and talent shifts, or no portfolio value delta versus do-nothing; a proposed allocation that does not sum to the same reallocatable total as do-nothing (a funding request masquerading as a reallocation); a retained loser held by the word "strategic" with no sized interdependency; any citation naming a source the model did not actually observe this session — such numbers are "model estimate — unverified" with a range, never dressed as a Business Case, filing, or comp; no falsification pass covering mean reversion, option value, and correlated risk; unsourced precision anywhere in the tables; a convention that lives in skill 10's Convention Table (margin basis, discounting, drop-through) hardcoded locally instead of cited by row ID and operative value; an analyst-set decision rule (value-trap threshold, marginal-ROIC haircut, absorptive-capacity cap, capitalization rate, milestone read-count, unit risk premium) not submitted to skill 03 as a register candidate in provisional-citation form, or written into the register by portfolio-review itself; a dated trigger (FIX leash, convert-or-exit milestone, option expiry) whose recovery read cannot land by its gate under the §12 anchored additive formula and carries none of the four dispositions; a missing upstream artifact run without the canonical DEGRADED — gap: NN (skill-name) flag and its re-anchor obligation, or the two degraded modes blended into one caveat. In quick-screen and reallocation-refresh modes, apply the mode-adjusted kills defined there.
Handoffs
- initiative-prioritization (skill 13) consumes the Portfolio Assessment + Resource Shifts to sequence the fund/fix/harvest/exit moves into a ranked initiative portfolio — the default next step.
- business-case (skill 10) if a fix or exit call needs its own investment case built or refreshed before the board will act — hand it the disposition and the EP gap.
- assumption-audit (skill 03) receives every analyst-set decision rule this review relies on (value-trap threshold, marginal-ROIC haircut, absorptive-capacity cap, capitalization rate, milestone read-counts, unit risk premia) as register candidates in provisional-citation form ("candidate [name], handed in Portfolio Assessment + Resource Shifts, row ID pending") — skill 03 is the SOLE writer and dispositions each one (absorb / merge / reject). Also hand it the flagged single-source load-bearing capital and marginal-ROIC assumptions to validate. Conventions (margin basis, discounting, drop-through) go to skill 10's Convention Table, not here.
- stakeholder-alignment (skill 18) when the courage test surfaces resistance that will block the shift — hand it the resistance map. Offer the handoff explicitly: name the artifact produced and the skill that consumes it.