| Server IP : 3.147.158.171 / Your IP : 216.73.216.216 Web Server : Apache/2.4.67 (Amazon Linux) OpenSSL/3.5.5 System : Linux ip-172-31-2-178.us-east-2.compute.internal 6.1.172-216.329.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Wed May 20 06:31:34 UTC 2026 x86_64 User : ec2-user ( 1000) PHP Version : 8.4.21 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /tsai/repo/.claude/skills/store-ia/ |
Upload File : |
---
name: store-ia
description: Build, regenerate, or tear down the Scike store's marketing pages, navigation menus, and the Commerce product line on the Scike Drupal store (scike.ai production by default, or local store.test) from the information architecture defined in this skill (manifest.json, pages/, and IA-and-strategy.md). Idempotent and self-cleaning.
argument-hint: build | clean | status [local|scike]
---
# Store IA
Create and manage every page, menu, and Commerce product that makes up the Scike store's
information architecture on the **local** Drupal store at `http://store.test/`. Driven entirely by
a manifest plus HTML bodies that live inside this skill, and tracked in Drupal state so it can
remove exactly what it created.
**Source of truth for the copy:** the HTML bodies in this skill's `pages/` directory — they *are*
the canonical page copy. The strategy, positioning, and voice behind that copy live in
`IA-and-strategy.md` (the north-star spec, alongside this file). When the copy changes, edit the
HTML body (and `manifest.json` if the structure changed), then re-run `build`.
**Argument:** $ARGUMENTS — one of `build`, `clean`, or `status` (default `status` if omitted).
## What this skill owns
When you run `build` it **takes ownership** of, and will overwrite/replace:
- **14 Basic pages** (`page` nodes) with URL aliases — Home, Features overview, the 4 feature
deep-dives, How It Works, Pricing, About, Support, Contact, and the 3 Legal pages.
- The **front page** (`system.site:page.front`) — set to the Home node; the original value is saved
and restored on `clean`.
- The **`main` and `footer` menus** — all existing links in both are deleted and rebuilt from the
manifest (Features dropdown, Pricing, How It Works, About, Support, Get Started; footer Product /
Company / Legal / Account columns).
- **One Commerce product** "Scike — AI Publishing Platform" at `/store/scike` with three
subscription **variations** — Starter ($29), Pro ($79), Publisher ($199) — each on the `monthly`
billing schedule with the `product_variation` subscription type and a `plan` attribute value.
- A **footer menu block** placed in the active theme's `footer` region (the theme renders the main
menu but ships no footer block), so the footer nav actually appears.
- Any **legacy** Scike/VibeChat product, the default "Welcome to Scike" page, and the
default main-menu links are removed so the IA is the single source of truth.
It also disables auto-title generation on the `default` product-variation type so the variation
titles read "Scike — Starter" rather than the generated "<product> - <attribute>" form.
## Files in this skill
- `manifest.json` — the structural map: pages (key/title/alias/body file), the `main`/`footer` menu
trees, and the product + variations. **Edit this to change structure, paths, prices, or nav.**
- `pages/*.html` — the body HTML for each page (and `product-scike.html` for the product), and the
**single source of truth for page copy**. **Edit these to change copy.** The strategy behind the
copy is `IA-and-strategy.md`.
- `store_ia.php` — the Drush script that applies the manifest. You normally don't edit this.
## Running it
The script is environment-agnostic — it only uses the Drupal API and paths relative to itself, so the
**target is just whichever Drupal install you point Drush at**. The skill files (script, manifest, `pages/`)
are git-tracked, so they land on the scike server via the deploy's `git pull` at
`/data/tsai/.claude/skills/store-ia/`.
**Default target is scike.ai production.** Run local only when you explicitly pass `local` or are iterating
on copy before shipping.
### On scike production (`scike.ai`) — default
SSH in and run Drush from `/data/tsai/store` using the **server's system PHP** (`./vendor/bin/drush`
directly — do **not** `source setup-env.sh`, that is MAMP/local-only). The `tsai_store` theme must be the
**default theme first** so the footer menu block lands in the right region:
```bash
ssh -i ~/.ssh/tsai.pem ec2-user@scike.ai
cd /data/tsai/store
# one-time, if not already active:
./vendor/bin/drush theme:install tsai_store -y && ./vendor/bin/drush config:set system.theme default tsai_store -y && ./vendor/bin/drush cr
# then:
./vendor/bin/drush scr ../.claude/skills/store-ia/store_ia.php -- <mode>
./vendor/bin/drush cr
```
`build` preserves existing Commerce orders and user accounts — it only replaces the IA pages/menus/product
and the front page (the old front page is saved to state and restored by `clean`). Production runs are
idempotent and reversible, exactly like local. The store may sit in **maintenance mode** pre-launch (503 to
anonymous visitors); that does not affect the build and is not changed by this skill.
### On local (`store.test`) — pass `local`
The local store uses MAMP's PHP, so source the env first, then run Drush from the `store/` directory. Admin
password on the local store is `admin` if you need the UI.
```bash
cd /Users/jturman/development/john && source setup-env.sh
cd store
./vendor/bin/drush scr ../.claude/skills/store-ia/store_ia.php -- <mode>
```
### `build` — create or regenerate everything
```bash
./vendor/bin/drush scr ../.claude/skills/store-ia/store_ia.php -- build
```
Idempotent: it first deletes anything it previously created (recorded in state), then rebuilds from
the manifest, so running it repeatedly — or after editing the IA — never duplicates content. This
is also how you **regenerate after an IA change**: update the HTML/`manifest.json`, then run `build`.
### `clean` — remove everything this skill created
```bash
./vendor/bin/drush scr ../.claude/skills/store-ia/store_ia.php -- clean
```
Deletes the tracked pages, menu links, footer block, product, variations, and plan attribute
values, and restores the previous front page (falling back to `/user/login` if the original home
node no longer exists).
Leaves the `main`/`footer` menus empty (it does not resurrect the old default links).
### `status` — report what's tracked
```bash
./vendor/bin/drush scr ../.claude/skills/store-ia/store_ia.php -- status
```
## Verifying a build
After `build`, the front page and key routes should all return 200 (use the host for your target —
`https://scike.ai` for production, `http://store.test` for local):
```bash
HOST=https://scike.ai # or http://store.test for local
for u in / /pricing /features/content-engine /store/scike /legal/terms; do
echo "$(curl -s -o /dev/null -w '%{http_code}' $HOST$u) $u"
done
```
> On production, if the store is in maintenance mode these return **503** to anonymous requests even
> though the build succeeded. Verify content internally instead, e.g.
> `./vendor/bin/drush state:get tsai_store_ia.pages` (lists the page nids) and
> `./vendor/bin/drush config:get system.theme default` (should be `tsai_store`).
## Regenerating after an IA change
1. Edit the copy directly in the relevant `pages/<page>.html` body — it's the source of truth. (For
a positioning/voice change, update `IA-and-strategy.md` too so the north-star spec stays in
sync.)
2. Edit `manifest.json` if the **structure** changed (new page, new path, renamed menu item, new
price).
- Adding a page = add an entry to `manifest.pages` + a new `pages/<file>.html`, and add it to the
`main`/`footer` menu trees if it should appear in nav.
3. Run `build`. The old version is removed and the new one created in one pass.
## Provisioning note (already wired)
The store's `tsai_provisioning` module maps a purchased plan to an internal tier by matching the
variation title. It was updated so the IA's tier names resolve correctly:
- `publisher` (or legacy `gold`) → **gold**
- `pro` (or legacy `silver`) → **silver**
- `starter` (or anything else) → **bronze**
So `Scike — Starter/Pro/Publisher` orders provision bronze/silver/gold sites respectively. If you
rename the tiers in the manifest, keep a matching keyword in the title or update
`store/web/modules/custom/tsai_provisioning/src/EventSubscriber/OrderPaidSubscriber.php`.
## Scope
This skill targets the **scike.ai production** store by default, and the **local** `store.test` store
when you pass `local`. The script is identical for both — the only difference is which Drupal install
Drush is pointed at (SSH + system PHP on the server vs. local MAMP PHP). On production it surgically
replaces only the IA it owns (pages, menus, footer block, product/variations, front page); Commerce
orders and user accounts are never touched, and `clean` reverses it. The skill never copies databases or
edits config outside what it tracks in `tsai_store_ia.*` state.