Skip to content

Commit 634ee2d

Browse files
authored
Fix Studio catalog totals and verify installed harness lifecycle (#11)
1 parent 272d42d commit 634ee2d

13 files changed

Lines changed: 166 additions & 28 deletions

File tree

.claude-plugin/marketplace.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
},
77
"metadata": {
88
"description": "The Claude, Inc. marketplace: hire the whole company in one install.",
9-
"version": "1.5.0"
9+
"version": "1.5.1"
1010
},
1111
"plugins": [
1212
{

.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "claude-inc",
3-
"version": "1.5.0",
3+
"version": "1.5.1",
44
"description": "Hire a whole AI company in one command: Peer CEO and CTO executives, 8 departments, 54 skill manuals, and bounded project review loops. For Claude Code & any AI CLI.",
55
"author": {
66
"name": "Alexandre Beguel",

.github/workflows/validate.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949
[[ "$brief_output" == *'CEO Operating Manual'* ]]
5050
./bin/company roster > /dev/null
5151
./bin/company help > /dev/null
52-
[ "$(./bin/company version)" = "company v1.5.0" ]
52+
[ "$(./bin/company version)" = "company v1.5.1" ]
5353
5454
- name: A closed pipe ends the CLI quietly (macOS and Linux)
5555
if: runner.os != 'Windows'
@@ -342,7 +342,7 @@ jobs:
342342
& bash ./bin/company roster | Out-Null
343343
if ($LASTEXITCODE -ne 0) { throw 'CLI roster failed' }
344344
$version = & bash ./bin/company version
345-
if ($LASTEXITCODE -ne 0 -or $version -ne 'company v1.5.0') { throw "Unexpected CLI version: $version" }
345+
if ($LASTEXITCODE -ne 0 -or $version -ne 'company v1.5.1') { throw "Unexpected CLI version: $version" }
346346
347347
$prompt = (& bash ./bin/company onboard --print) -join "`n"
348348
foreach ($marker in @('QUESTION 1/3', 'QUESTION 2/3', 'QUESTION 3/3', 'PROPOSAL')) {
@@ -485,7 +485,7 @@ jobs:
485485
[ "$(ls -1 "$HOME/.claude/skills" | wc -l | tr -d ' ')" -eq 54 ]
486486
[ "$(ls -1 "$HOME/.claude/agents" | wc -l | tr -d ' ')" -eq 9 ]
487487
[ -L "$HOME/.local/bin/company" ]
488-
[ "$("$HOME/.local/bin/company" version)" = "company v1.5.0" ]
488+
[ "$("$HOME/.local/bin/company" version)" = "company v1.5.1" ]
489489
490490
export HOME="$test_root/project home"
491491
project="$test_root/project with spaces"
@@ -569,7 +569,7 @@ jobs:
569569
$wrapper = Join-Path $env:HOME '.local/bin/company.exe'
570570
if (-not (Test-Path -LiteralPath $wrapper)) { throw 'CLI wrapper was not installed' }
571571
$version = & $wrapper version
572-
if ($LASTEXITCODE -ne 0 -or $version -ne 'company v1.5.0') { throw "Unexpected installed CLI version: $version" }
572+
if ($LASTEXITCODE -ne 0 -or $version -ne 'company v1.5.1') { throw "Unexpected installed CLI version: $version" }
573573
574574
$wrapperProject = Join-Path $testRoot 'wrapper profile project with spaces'
575575
$wrapperProfileDir = Join-Path $wrapperProject '.claude'

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
Notable changes to Claude, Inc. Loosely follows [Keep a Changelog](https://keepachangelog.com).
44

5+
## [1.5.1] - 2026-09-08
6+
7+
### Fixed
8+
- Derived Mission Studio employee and manual totals from the validated catalog,
9+
with matching HTML fallbacks and the current CEO/CTO company preview image.
10+
- Added catalog-based count checks and an installed schema-2 project lifecycle
11+
regression covering the bounded harness and CTO review flow.
12+
513
## [1.5.0] - 2026-09-08
614

715
### Added

bin/company

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# https://github.com/alebgl77/claude-inc
44
set -euo pipefail
55

6-
VERSION="1.5.0"
6+
VERSION="1.5.1"
77

88
# ---------------------------------------------------------------- resolve root
99
SOURCE="${BASH_SOURCE[0]}"

install.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ if ((-not $NoBin) -or $Onboard) {
218218
if ($git) { $gitBash = [IO.Path]::GetFullPath((Join-Path (Split-Path -Parent $git.Source) "..\bin\bash.exe")); if (Test-Path -LiteralPath $gitBash -PathType Leaf) { $bashes += $gitBash } }
219219
foreach ($bash in @($bashes | Select-Object -Unique)) {
220220
$probe = & $bash -l $CompanyScriptProbe version 2>$null
221-
if ($LASTEXITCODE -eq 0 -and $probe -eq "company v1.5.0") { $BashPath = $bash; break }
221+
if ($LASTEXITCODE -eq 0 -and $probe -eq "company v1.5.1") { $BashPath = $bash; break }
222222
}
223223
}
224224
if ((-not $NoBin) -and -not $BashPath) { throw "The company CLI requires a working Bash. Install Git for Windows, or rerun with -NoBin." }

scripts/validate.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
EXPECTED_EMPLOYEES = 54
2424
EXPECTED_DEPARTMENTS = 8
2525
EXPECTED_EMPLOYEES_PER_DEPARTMENT = 6
26-
EXPECTED_VERSION = "1.5.0"
26+
EXPECTED_VERSION = "1.5.1"
2727
CANONICAL_DEPARTMENTS = {
2828
"developers", "designers", "marketing", "social-media", "finance",
2929
"small-business", "legal", "sales",

studio/missions.html

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@
1111
<meta property="og:title" content="Mission Studio — Claude, Inc.">
1212
<meta property="og:description" content="Plan a mission with selected Claude, Inc. manuals, ordered handoffs, and requested review checks. Export a complete prompt. Works offline; no agents run here.">
1313
<meta property="og:url" content="https://alebgl77.github.io/claude-inc/missions.html">
14-
<meta property="og:image" content="https://alebgl77.github.io/claude-inc/social-preview.png">
14+
<meta property="og:image" content="https://alebgl77.github.io/claude-inc/company-team.png">
1515
<meta property="og:image:type" content="image/png">
16-
<meta property="og:image:width" content="1200">
17-
<meta property="og:image:height" content="630">
18-
<meta property="og:image:alt" content="Claude, Inc. Your project. An entire company. A founder and CEO above eight departments, with fifty specialist skills.">
16+
<meta property="og:image:width" content="1774">
17+
<meta property="og:image:height" content="887">
18+
<meta property="og:image:alt" content="Claude, Inc. robot teams with the CEO and CTO above eight business departments.">
1919
<meta name="twitter:card" content="summary_large_image">
2020
<meta name="twitter:title" content="Mission Studio — Claude, Inc.">
2121
<meta name="twitter:description" content="Plan a mission with selected Claude, Inc. manuals, ordered handoffs, and requested review checks. Export a complete prompt. Works offline; no agents run here.">
22-
<meta name="twitter:image" content="https://alebgl77.github.io/claude-inc/social-preview.png">
23-
<meta name="twitter:image:alt" content="Claude, Inc. Your project. An entire company. A founder and CEO above eight departments, with fifty specialist skills.">
22+
<meta name="twitter:image" content="https://alebgl77.github.io/claude-inc/company-team.png">
23+
<meta name="twitter:image:alt" content="Claude, Inc. robot teams with the CEO and CTO above eight business departments.">
2424
<link rel="icon" type="image/svg+xml" href="favicon.svg">
2525
<link rel="stylesheet" href="studio.css">
2626
<script src="missions.js" defer></script>
@@ -39,7 +39,7 @@
3939
<div class="index-top"><p class="eyebrow">A FOCUSED JOB WITHIN YOUR COMPANY</p><p class="index-title">Good work starts<br>with a clear mission.</p><p class="index-intro">Choose the job. Shape the brief.<br>Give your assistant a plan.</p></div>
4040
<nav id="mission-nav" aria-label="Choose a mission"></nav>
4141
<div class="index-note"><span class="index-symbol" aria-hidden="true"></span><p>A focused crew.<br>A visible hand-off.<br>A definition of done.</p></div>
42-
<div class="index-footer"><span>50 EMPLOYEES</span><span>8 DEPARTMENTS</span><a href="https://github.com/alebgl77/claude-inc#hire-everyone-in-60-seconds">Install the company <span aria-hidden="true"></span></a></div>
42+
<div class="index-footer"><span id="company-count">54 EMPLOYEES</span><span>8 DEPARTMENTS</span><a href="https://github.com/alebgl77/claude-inc#hire-everyone-in-60-seconds">Install the company <span aria-hidden="true"></span></a></div>
4343
</aside>
4444

4545
<main id="workspace" tabindex="-1">
@@ -52,7 +52,7 @@
5252
</section>
5353

5454
<section class="mission-facts" aria-label="Mission scope">
55-
<div class="fact"><span class="fact-value"><span id="crew-count"></span><span class="fact-denominator"> / 50</span></span><span class="fact-label">employees in this crew</span></div>
55+
<div class="fact"><span class="fact-value"><span id="crew-count"></span><span id="crew-total" class="fact-denominator"> / 54</span></span><span class="fact-label">employees in this crew</span></div>
5656
<div class="fact"><span class="fact-value" id="stage-count"></span><span class="fact-label">stages with hand-offs</span></div>
5757
<div class="fact reading-fact"><span class="fact-value" id="reading-reduction"></span><span class="fact-label">smaller skill reading set <a href="#reading-manifest" aria-label="See how the skill reading set is calculated"></a></span></div>
5858
<p class="fact-note">The right people for the job.<br>Everyone else stays on the bench.</p>
@@ -62,7 +62,7 @@
6262
<section class="workflow" aria-labelledby="workflow-title">
6363
<div class="section-heading"><div><p class="eyebrow">01 / THE RUN OF SHOW</p><h2 id="workflow-title">A team. A sequence.<br>A way through.</h2></div><span class="section-caption">Open a stage<br>for the details <span aria-hidden="true"></span></span></div>
6464
<ol id="stage-list" class="stage-list"></ol>
65-
<details id="reading-manifest" class="reading-manifest"><summary>The crew &amp; its reading set <span aria-hidden="true">+</span></summary><div class="manifest-body"><p id="reading-explanation"></p><ul id="crew-list"></ul><p class="fine-print">Measured from the UTF-8 bytes of the selected skill manuals versus all 50 unique manuals. This is a source-size comparison, not a token, cost, speed, or runtime estimate.</p></div></details>
65+
<details id="reading-manifest" class="reading-manifest"><summary>The crew &amp; its reading set <span aria-hidden="true">+</span></summary><div class="manifest-body"><p id="reading-explanation"></p><ul id="crew-list"></ul><p class="fine-print">Measured from the UTF-8 bytes of the selected skill manuals versus all <span id="manual-count">54</span> unique manuals. This is a source-size comparison, not a token, cost, speed, or runtime estimate.</p></div></details>
6666
</section>
6767

6868
<section class="composer" aria-labelledby="composer-title">

studio/studio.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,9 @@
190190
const catalog = root.CLAUDE_INC_MISSIONS;
191191
const datasetCheck = validateDataset(catalog);
192192
if (!datasetCheck.valid) { byId('load-error').textContent = datasetCheck.message; byId('load-error').hidden = false; return; }
193+
byId('company-count').textContent = NUMBER.format(catalog.skillCount) + ' EMPLOYEES';
194+
byId('crew-total').textContent = ' / ' + NUMBER.format(catalog.skillCount);
195+
byId('manual-count').textContent = NUMBER.format(catalog.skillCount);
193196
const missions = MISSION_IDS.map(id => catalog.missions.find(mission => mission.id === id));
194197
const drafts = new Map(missions.map(mission => [mission.id, mission.sampleBrief]));
195198
let current;

tests/installers_safety.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ function New-Fixture([string]$Path) {
3434
Write-Utf8 (Join-Path $Path "commands/company.md") "command-v1`n"
3535
Write-Utf8 (Join-Path $Path "onboarding/ONBOARDING.md") "# Onboarding`n"
3636
Write-Utf8 (Join-Path $Path ".claude-plugin/plugin.json") '{"name":"fixture"}'
37-
Write-Utf8 (Join-Path $Path "bin/company") "#!/usr/bin/env bash`nif [ `"`${1:-}`" = version ]; then echo `"company v1.5.0`"; else echo company; fi`n"
37+
Write-Utf8 (Join-Path $Path "bin/company") "#!/usr/bin/env bash`nif [ `"`${1:-}`" = version ]; then echo `"company v1.5.1`"; else echo company; fi`n"
3838
}
3939

4040
function Invoke-Global([string]$Fixture, [string]$HomePath, [switch]$NoBin) {
@@ -402,7 +402,7 @@ if ($Point -eq "before-cleanup-stage") { throw "simulated cleanup failure" }
402402
$fixture = Join-Path $TestRoot "percent %NAME% source"; $TestHome = Join-Path $TestRoot "percent home"; New-Fixture $fixture; $null = New-Item -ItemType Directory -Force -Path $TestHome
403403
$oldName = $env:NAME; $env:NAME = "EXPANDED"
404404
try { Invoke-Global $fixture $TestHome; $version = & (Join-Path $TestHome ".local/bin/company.exe") version } finally { $env:NAME = $oldName }
405-
if ($LASTEXITCODE -ne 0 -or $version -ne "company v1.5.0") { Fail "percent-safe wrapper did not launch the intended source" }
405+
if ($LASTEXITCODE -ne 0 -or $version -ne "company v1.5.1") { Fail "percent-safe wrapper did not launch the intended source" }
406406

407407
# A blocked remote upgrade never pulls or mutates the active legacy cache or wrapper.
408408
$origin = Join-Path $TestRoot "remote origin"; $activeCache = Join-Path $TestRoot "active cache"; $TestHome = Join-Path $TestRoot "remote home"

0 commit comments

Comments
 (0)