← All playbooks · Raw API
resources-hub-pages
# Resources hub & listing pages — Headwater Science
Playbook for **resource indexes and tag listing pages** — not article detail pages.
## URL patterns
| Public path | Driven by |
|-------------|-----------|
| `/resources/news/` | `articleType` `resources/news` |
| `/resources/publications/` | `articleType` `resources/publications` |
| `/resources/news/{tag}/` | Tag + article type |
| `/resources/publications/{tag}/` | Tag + article type |
| `/categories/` | `customType` `categories` |
| `/categories/{tag}/` | Tag entry |
Article details: `/resources/{type}/{primaryTopic}/{slug}/` — use `news-pages` or `publications-pages`.
## How listing pages work
Listing URLs are **taxonomy-generated** — do not create standalone **page** entries for `/resources/news/press-release/` etc.
| Target | What to edit |
|--------|--------------|
| **Article type** | `indexPageTopContent` — news hero collection or tag listing hero |
| **Tag** | `title`, `description`, optional hero overrides |
| **customType** `categories` | Category directory + listing collections on `/categories/` |
| **Articles** | Tags control listing membership |
```bash
cms-edit list --type articleType
cms-edit list --type tag
cms-edit index sync
```
## Index components
### News hub
- **News hero articles** on `resources/news` `indexPageTopContent`
- Listing grids auto-hydrate from tagged articles
### Publications hub
- **Tag listing hero** on `resources/publications` `indexPageTopContent`
- **Publications list** collection for filterable grid
### Categories hub
- **Category directory** + publications/news listing blocks on `customType` `categories`
## Workflow
1. Read `cms-edit://customer/articles`
2. Identify hub (articleType/customType) vs tag entry
3. Edit `indexPageTopContent` / hero components — retag articles to change listings
4. `preview urls` on listing path
5. `diff` → `save` → `task-publish-handoff`
## Out of scope
- Creating page entries for listing URLs
- Article body edits — use article playbooks
## Publish handoff
`save` creates drafts only — publish in Contentful UI when ready.