{"version":1,"pages":[{"id":"c8mWtVZr9URm1y7CchUc","title":"PressGang","pathname":"/","siteSpaceId":"sitesp_uNqrv","emoji":"2693","description":"PressGang anchors your workflow in modern development practices. Build cleaner, faster, smarter themes and navigate your development course to calmer seas!"},{"id":"9OgHW9q6vqvP34WjZeWI","title":"Boot Sequence","pathname":"/boot-sequence","siteSpaceId":"sitesp_uNqrv","emoji":"1f680","description":""},{"id":"DTEaq0OqKnqHkaWPYtZm","title":"Config","pathname":"/config","siteSpaceId":"sitesp_uNqrv","emoji":"2699","description":""},{"id":"WRsedS62GFBJrfMa6n1o","title":"Controllers","pathname":"/controllers","siteSpaceId":"sitesp_uNqrv","emoji":"1f9ed","description":""},{"id":"IZXhEBWi0BfWUAO2wdw5","title":"Views","pathname":"/views","siteSpaceId":"sitesp_uNqrv","emoji":"1f5bc","description":""},{"id":"EZeN0mehF2ncvhAbAE4s","title":"Template Routing","pathname":"/template-routing","siteSpaceId":"sitesp_uNqrv","emoji":"1f5fa","description":""},{"id":"768vC4JU7BKXRDECR7JY","title":"Context Managers","pathname":"/context-managers","siteSpaceId":"sitesp_uNqrv","emoji":"1f4e6","description":""},{"id":"Rp40OwR7DXYWDIH0To9d","title":"Twig Extensions","pathname":"/twig-extensions","siteSpaceId":"sitesp_uNqrv","emoji":"1f9e9","description":""},{"id":"qjxp2Eb5xg4htvMCdd6E","title":"Service Providers","pathname":"/service-providers","siteSpaceId":"sitesp_uNqrv","emoji":"1f50c","description":""},{"id":"br3fppBj04UQ0dhn3tpl","title":"Blocks","pathname":"/blocks","siteSpaceId":"sitesp_uNqrv","emoji":"1f9f1","description":""},{"id":"kujgLmnWKCEz8RvN3gbv","title":"Snippets","pathname":"/snippets","siteSpaceId":"sitesp_uNqrv","emoji":"2702","description":""},{"id":"1alpjfFgAUMXsposM1Hb","title":"Forms and Validation","pathname":"/forms","siteSpaceId":"sitesp_uNqrv","emoji":"1f4cb","description":""},{"id":"gGMcOLidJmMf95bMBhye","title":"SEO","pathname":"/seo","siteSpaceId":"sitesp_uNqrv","emoji":"1f50d","description":""},{"id":"oZFKzUZcPsGA8r6778CH","title":"Testing","pathname":"/testing","siteSpaceId":"sitesp_uNqrv","emoji":"1f9ea","description":"PHPUnit unit tests for PressGang's own PHP framework code — no WordPress install required — plus where to go for full theme end-to-end testing."},{"id":"R6alIBJpY2gacJdEBHeV","title":"Quartermaster","pathname":"/ecosystem/quartermaster","siteSpaceId":"sitesp_uNqrv","emoji":"2693","description":"A fluent, args-first query builder for WP_Query and WP_Term_Query. WordPress-native under the hood — no ORM, no magic, no lock-in.","breadcrumbs":[{"label":"Ecosystem"}]},{"id":"0R70V7jA0cO2vVWQp9hD","title":"Capstan","pathname":"/ecosystem/capstan","siteSpaceId":"sitesp_uNqrv","emoji":"1f6de","description":"A WP-CLI command package that scaffolds, configures, and packages PressGang WordPress themes. Dry-run by default — preview every plan before it writes a byte.","breadcrumbs":[{"label":"Ecosystem"}]},{"id":"VMVGXSMQGbV5f6zcBg8T","title":"Bosun","pathname":"/ecosystem/bosun","siteSpaceId":"sitesp_uNqrv","emoji":"1f9ed","description":"A WP-CLI package that composes AI agent guidelines and skills for PressGang themes — generated from what each theme actually has installed and enabled.","breadcrumbs":[{"label":"Ecosystem"}]},{"id":"tah9oQHxfVPSXt61GKW9","title":"Muster","pathname":"/ecosystem/muster","siteSpaceId":"sitesp_uNqrv","emoji":"1f36a","description":"Describe the content your WordPress site needs, in code. Run it as often as you like and get the same site every time — WordPress-native, no ORM, no lock-in.","breadcrumbs":[{"label":"Ecosystem"}]},{"id":"RgA9Png8OilzPmDmFkJA","title":"Shakedown","pathname":"/ecosystem/shakedown","siteSpaceId":"sitesp_uNqrv","emoji":"1f6a2","description":"End-to-end browser testing for PressGang themes with zero tests to write — the route matrix, fixtures, and checks are all derived from your theme.","breadcrumbs":[{"label":"Ecosystem"}]},{"id":"swf7n7OEaQBJgXxv3apa","title":"Design & Internals","pathname":"/ecosystem/shakedown/shakedown-design","siteSpaceId":"sitesp_uNqrv","emoji":"1f9ed","description":"Why Shakedown is built the way it is — and how each layer works, with the third-party tools it stands on and where their documentation lives.","breadcrumbs":[{"label":"Ecosystem"},{"label":"Shakedown","emoji":"1f6a2"}]},{"id":"zuXkBB3ogHMsoiFt8EfE","title":"A Note from the Author","pathname":"/about/note-from-author","siteSpaceId":"sitesp_uNqrv","emoji":"270d","description":"","breadcrumbs":[{"label":"About"}]}]}