docs: group Strategy into Skills Adoption and Autonomous Agent stages #30
No files matched your search
@@ -1,7 +1,7 @@
|
||||
---
|
||||
id: measurement
|
||||
title: Skills Measurement
|
||||
sidebar_label: Skills Measurement
|
||||
sidebar_label: Measurement
|
||||
description: Which KPIs to collect during skills adoption, where the evidence comes from, how to calculate them and when to report.
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
@@ -68,6 +68,6 @@ Stage 2 builds on proven skills, measurements and working practices—not permis
|
||||
|
||||
</details>
|
||||
|
||||
**Next:** [Return to the strategy destination →](./target-operating-model.mdx)
|
||||
**Next:** [Stage - 01 - Skills Adoption →](./stage-01-skills-adoption.mdx)
|
||||
|
||||
</div>
|
||||
@@ -44,6 +44,6 @@ Owner ratification is required before adoption. Review earlier after incidents o
|
||||
|
||||
</details>
|
||||
|
||||
**Next:** [Use exit evidence to choose the next rollout stage →](./roadmap.mdx)
|
||||
**Next:** [Stage - 02 - Autonomous Agent →](./stage-02-autonomous-agent.mdx)
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
id: stage-01-skills-adoption
|
||||
title: Stage - 01 - Skills Adoption
|
||||
description: Build proven skills and measurable working practices through human and AI Agent collaboration, starting with Delivery.
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
<div className="strategy-content">
|
||||
|
||||
**Human + AI Agent → proven skills and working practices → future Autonomous Agent.**
|
||||
|
||||
This first stage of the [Roadmap](./roadmap.mdx) standardizes skills in real human + AI Agent work. It builds the foundation for [Target](./target-operating-model.mdx), while people direct the work, verify outcomes and improve the skills.
|
||||
|
||||
## Delivery first
|
||||
|
||||
Start with the engineering path: codebase structure and existing principles → system-logic source → tests → builds and packaging → deployments. Understand actual practices, tooling, controls and problems before changing them.
|
||||
|
||||
Adoption then extends to other SDLC phases; their order is not yet decided. Delivery keeps improving as adoption expands.
|
||||
|
||||
## Repeat within each phase
|
||||
|
||||
**Understand the current situation → establish KPIs and a baseline → engineer skills topology → use skills in real work → collect metrics and feedback → understand the new current situation → repeat.**
|
||||
|
||||
Skills topology connects what skills exist, how they relate, when they are used and how they work together. Compare accepted outcomes, quality, cost and review effort with the baseline; use friction and feedback to revise the skills and working practices. These are repeating steps within each phase, not additional roadmap stages.
|
||||
|
||||
## Put the foundation into practice
|
||||
|
||||
- [Governance](./skills-governance.mdx) — define ownership, authority and approval of skills.
|
||||
- [Quality](./skills-quality.mdx) — qualify skills and verify their outcomes before wider use.
|
||||
- [Adoption](./skills-adoption.mdx) — coach bounded workflows with a supported client and a manual path.
|
||||
- [Measurement](./measurement.mdx) — establish KPIs, collect evidence and compare outcomes with the baseline.
|
||||
- [Maintenance](./skills-maintenance.mdx) — review feedback, control versions and recover from unsafe updates.
|
||||
|
||||
Proven skills, measurements and working practices support [Stage - 02 - Autonomous Agent](./stage-02-autonomous-agent.mdx); adoption alone does not grant autonomous execution authority.
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,24 @@
|
||||
---
|
||||
id: stage-02-autonomous-agent
|
||||
title: Stage - 02 - Autonomous Agent
|
||||
description: Introduce the future Autonomous Agent on proven skills and measured practices while humans retain direction and review.
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
<div className="strategy-content">
|
||||
|
||||
**Proven skills and measured practices → future Autonomous Agent → human-directed SDLC.**
|
||||
|
||||
This future stage of the [Roadmap](./roadmap.mdx) builds on [Stage - 01 - Skills Adoption](./stage-01-skills-adoption.mdx). The destination is [Target](./target-operating-model.mdx): an Autonomous Agent that executes and governs the SDLC cycle, with humans retaining direction and review.
|
||||
|
||||
## Build on what has been proven
|
||||
|
||||
Carry forward proven skills, measurements and working practices from real human + AI Agent work. The skills foundation provides [governance](./skills-governance.mdx), [quality checks](./skills-quality.mdx), [adoption feedback](./skills-adoption.mdx), [measurement](./measurement.mdx) and [maintenance](./skills-maintenance.mdx); it is not permission to expand authority automatically.
|
||||
|
||||
## Introduce authority deliberately
|
||||
|
||||
Establish reliable observation and evidence assembly, then proposing and routing work, before granting scoped execution authority. The Roadmap describes recommended controls and hold conditions, including exact-artifact approvals, independent review, recovery and human takeover. Sensitive decisions remain human; missing evidence never means permission.
|
||||
|
||||
This is future direction, not deployed autonomy, agreed delivery dates or approved KPI thresholds. The transition depends on reviewed evidence and explicit authority decisions, not adoption volume alone.
|
||||
|
||||
</div>
|
||||
@@ -162,6 +162,6 @@ Success means accepted outcomes with maintained quality, controlled risk and und
|
||||
|
||||
</details>
|
||||
|
||||
**Next:** [Decide who owns and approves each skill →](./skills-governance.mdx)
|
||||
**Next:** [Follow the Roadmap toward Target →](./roadmap.mdx)
|
||||
|
||||
</div>
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
"verify:build": "node scripts/verify.mjs --build",
|
||||
"diagrams:build": "node scripts/build-diagrams.mjs",
|
||||
"test": "node --test scripts/*.test.mjs",
|
||||
"test:browser": "node scripts/browser/strategy-story.cjs && node scripts/browser/inline-controls.cjs && node scripts/browser/sdlc-cycle.cjs && node scripts/browser/target-midpoints.cjs && node scripts/browser/skills-measurement.cjs && node scripts/browser/roadmap.cjs && node scripts/browser/roadmap-timeline.cjs",
|
||||
"test:browser": "node scripts/browser/strategy-navigation.cjs && node scripts/browser/strategy-story.cjs && node scripts/browser/inline-controls.cjs && node scripts/browser/sdlc-cycle.cjs && node scripts/browser/target-midpoints.cjs && node scripts/browser/skills-measurement.cjs && node scripts/browser/roadmap.cjs && node scripts/browser/roadmap-timeline.cjs",
|
||||
"kpi:example": "node scripts/ai-kpi.mjs"
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
@@ -125,9 +125,9 @@ const fs = require('node:fs');
|
||||
await page.screenshot({path:`${output}/${width}.png`, fullPage:true});
|
||||
await frame.locator('#btn-theme').click(); await theme('dark');
|
||||
// Exercise keyboard navigation without racing the portal's smooth scroll.
|
||||
await page.locator('.strategy-content a[href$="/strategy/skills-governance/"]').filter({visible:true}).focus();
|
||||
await page.locator('.strategy-content a[href$="/strategy/roadmap/"]').filter({visible:true}).focus();
|
||||
await page.keyboard.press('Enter');
|
||||
await page.waitForURL('**/strategy/skills-governance/');
|
||||
await page.waitForURL('**/strategy/roadmap/');
|
||||
await page.goBack({waitUntil:'domcontentloaded'});
|
||||
await page.waitForURL('**/strategy/target-operating-model/');
|
||||
await page.getByRole('heading', {name:'Target operating model', exact:true, level:1}).waitFor();
|
||||
|
||||
@@ -23,7 +23,7 @@ const fs = require('node:fs');
|
||||
if (width < 700) await page.getByRole('button', {name:'Toggle navigation bar'}).click();
|
||||
const menu = page.locator('.theme-doc-sidebar-menu .menu__link').filter({visible:true});
|
||||
await menu.first().waitFor({state:'visible'});
|
||||
assert.deepEqual(await menu.allTextContents(), ['Target', 'Roadmap', 'Skills governance', 'Skills quality', 'Skills adoption', 'Skills Measurement', 'Skills maintenance']);
|
||||
assert.deepEqual(await menu.allTextContents(), ['Target', 'Roadmap', 'Stage - 01 - Skills Adoption', 'Stage - 02 - Autonomous Agent']);
|
||||
assert((await menu.nth(0).getAttribute('href')).endsWith('/strategy/target-operating-model/'));
|
||||
assert((await menu.nth(1).getAttribute('href')).endsWith('/strategy/roadmap/'));
|
||||
assert.equal(await menu.filter({hasText:/^Target$/}).count(), 1);
|
||||
|
||||
@@ -22,7 +22,7 @@ const fs = require('node:fs');
|
||||
if (width < 700) await page.getByRole('button', {name:'Toggle navigation bar'}).click();
|
||||
const menu = page.locator('.theme-doc-sidebar-menu .menu__link').filter({visible:true});
|
||||
await menu.first().waitFor({state:'visible'});
|
||||
assert.deepEqual(await menu.allTextContents(), ['Target','Roadmap','Skills governance','Skills quality','Skills adoption','Skills Measurement','Skills maintenance']);
|
||||
assert.deepEqual(await menu.allTextContents(), ['Target','Roadmap','Stage - 01 - Skills Adoption','Governance','Quality','Adoption','Measurement','Maintenance','Stage - 02 - Autonomous Agent']);
|
||||
if (width < 700) await page.getByRole('button', {name:'Close navigation bar'}).click();
|
||||
const panel = page.locator('.archify-panel--story');
|
||||
const iframe = panel.locator(width > 700 ? '.story-desktop' : '.story-mobile');
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
const {chromium} = require('playwright');
|
||||
const assert = require('node:assert/strict');
|
||||
const fs = require('node:fs');
|
||||
(async () => {
|
||||
const base = process.argv[2] || 'http://127.0.0.1:4173';
|
||||
const output = `.cache/strategy-navigation-${process.argv[3] || 'local'}`;
|
||||
fs.mkdirSync(output, {recursive:true});
|
||||
const prefix = '/eldorado-v1/documentation/strategy/';
|
||||
const first = 'Stage - 01 - Skills Adoption';
|
||||
const second = 'Stage - 02 - Autonomous Agent';
|
||||
const topics = ['Governance','Quality','Adoption','Measurement','Maintenance'];
|
||||
const ids = ['target-operating-model','roadmap','stage-01-skills-adoption','skills-governance','skills-quality','skills-adoption','measurement','skills-maintenance','stage-02-autonomous-agent'];
|
||||
const titles = ['Target','Roadmap',first,'Skills governance','Skills quality','Skills adoption','Skills Measurement','Skills maintenance',second];
|
||||
const browser = await chromium.launch({headless:true, executablePath:process.env.PLAYWRIGHT_CHROMIUM_EXECUTABLE, args:['--no-sandbox']});
|
||||
const results = [];
|
||||
try {
|
||||
for (const width of [1440,1024,390,320]) {
|
||||
const context = await browser.newContext({viewport:{width,height:900}, colorScheme:'light'});
|
||||
try {
|
||||
const page = await context.newPage();
|
||||
const errors = [];
|
||||
page.on('pageerror', error => errors.push(error.message));
|
||||
const openMenu = async () => {
|
||||
if (width < 997) await page.getByRole('button', {name:'Toggle navigation bar'}).click();
|
||||
const menu = page.locator('.theme-doc-sidebar-menu').filter({visible:true});
|
||||
await menu.locator('.menu__link').first().waitFor({state:'visible'});
|
||||
return menu;
|
||||
};
|
||||
const closeMenu = async () => {
|
||||
if (width < 997) await page.getByRole('button', {name:'Close navigation bar'}).click();
|
||||
};
|
||||
assert.equal((await page.goto(`${base}${prefix}roadmap/`, {waitUntil:'networkidle'})).status(), 200);
|
||||
let menu = await openMenu();
|
||||
const visibleLabels = () => menu.locator('.menu__link').filter({visible:true}).allTextContents();
|
||||
assert.deepEqual(await visibleLabels(), ['Target','Roadmap',first,second]);
|
||||
const category = menu.locator('.theme-doc-sidebar-item-category').filter({has:page.getByRole('link', {name:first, exact:true})});
|
||||
const caret = category.locator('button.menu__caret');
|
||||
await caret.click();
|
||||
await category.getByRole('link', {name:'Governance', exact:true}).waitFor({state:'visible'});
|
||||
assert.deepEqual(await visibleLabels(), ['Target','Roadmap',first,...topics,second]);
|
||||
assert.deepEqual(await category.locator('ul .menu__link').allTextContents(), topics);
|
||||
await page.screenshot({path:`${output}/${width}-expanded.png`, animations:'disabled'});
|
||||
await caret.click();
|
||||
await category.getByRole('link', {name:'Governance', exact:true}).waitFor({state:'hidden'});
|
||||
assert.deepEqual(await visibleLabels(), ['Target','Roadmap',first,second]);
|
||||
await menu.getByRole('link', {name:first, exact:true}).click();
|
||||
await page.waitForURL(`${base}${prefix}stage-01-skills-adoption/`);
|
||||
await page.getByRole('heading', {level:1, name:first, exact:true}).waitFor();
|
||||
assert.equal(await page.locator('h1').innerText(), first);
|
||||
assert((await page.locator('article').innerText()).includes('Delivery first'));
|
||||
assert(!await page.evaluate(() => document.documentElement.scrollWidth > innerWidth));
|
||||
await page.screenshot({path:`${output}/${width}-stage-01.png`, fullPage:true, animations:'disabled'});
|
||||
for (const [index, id] of ids.entries()) {
|
||||
assert.equal((await page.goto(`${base}${prefix}${id}/`, {waitUntil:'networkidle'})).status(), 200);
|
||||
assert.equal(new URL(page.url()).pathname, `${prefix}${id}/`);
|
||||
// Target has a longer canonical page heading but keeps its short navigation label.
|
||||
if (index) assert.equal(await page.locator('h1').innerText(), titles[index]);
|
||||
else assert((await page.locator('h1').innerText()).includes('Target'));
|
||||
const prev = page.locator('.pagination-nav__link--prev');
|
||||
const next = page.locator('.pagination-nav__link--next');
|
||||
if (index) assert.equal(await prev.getAttribute('href'), `${prefix}${ids[index-1]}/`);
|
||||
else assert.equal(await prev.count(), 0);
|
||||
if (index < ids.length-1) assert.equal(await next.getAttribute('href'), `${prefix}${ids[index+1]}/`);
|
||||
else assert.equal(await next.count(), 0);
|
||||
if (index >= 3 && index <= 7) {
|
||||
assert.equal(await page.locator('.breadcrumbs a').filter({hasText:first}).getAttribute('href'), `${prefix}stage-01-skills-adoption/`);
|
||||
menu = await openMenu();
|
||||
assert.deepEqual(await visibleLabels(), ['Target','Roadmap',first,...topics,second]);
|
||||
await closeMenu();
|
||||
}
|
||||
assert(!await page.evaluate(() => document.documentElement.scrollWidth > innerWidth), `${width}: overflow on ${id}`);
|
||||
}
|
||||
assert((await page.locator('article').innerText()).includes('not deployed autonomy'));
|
||||
await page.screenshot({path:`${output}/${width}-stage-02.png`, fullPage:true, animations:'disabled'});
|
||||
assert.deepEqual(errors, []);
|
||||
results.push({width, routes:ids.length, linkedCategory:true, expandCollapse:true, nesting:true, breadcrumbs:true, pagination:true, overflow:false, errors});
|
||||
fs.writeFileSync(`${output}/results.json`, JSON.stringify(results,null,2));
|
||||
} finally {await context.close();}
|
||||
}
|
||||
assert.equal(results.length, 4);
|
||||
console.log('PASS: 4 desktop/mobile viewports; all 9 routes; linked category, expand/collapse, unique nested labels, breadcrumbs, next/previous and no overflow/errors');
|
||||
} finally {await browser.close();}
|
||||
})().catch(error => {console.error(error); process.exitCode = 1;});
|
||||
@@ -5,7 +5,7 @@ const read = p => readFileSync(p, 'utf8');
|
||||
const stages = ['Scope', 'Architecture', 'UI/UX', 'Planning', 'Delivery', 'UAT', 'Security', 'Releases'];
|
||||
|
||||
test('Strategy opens at the canonical autonomous lifecycle', () => {
|
||||
assert.match(read('sidebars/strategy.ts'), /strategySidebar: \['target-operating-model', 'roadmap'/);
|
||||
assert.match(read('sidebars/strategy.ts'), /strategySidebar:\s*\[\s*'target-operating-model',\s*'roadmap'/);
|
||||
assert.match(read('docs/strategy/target-operating-model.mdx'), /^sidebar_label: Target$/m);
|
||||
for (const id of ['target-operating-model']) {
|
||||
const page = read(`docs/strategy/${id}.mdx`);
|
||||
|
||||
@@ -6,7 +6,7 @@ const read = path => readFileSync(path, 'utf8');
|
||||
|
||||
test('Skills Measurement is an open adoption collection plan, not a hidden catalogue', () => {
|
||||
const page = read('docs/strategy/measurement.mdx');
|
||||
assert.match(page, /title: Skills Measurement\nsidebar_label: Skills Measurement/);
|
||||
assert.match(page, /title: Skills Measurement\nsidebar_label: Measurement/);
|
||||
for (const heading of ['Establish the baseline', 'Measure the pilot', 'Extend collection as adoption grows', 'Keep the collection running']) assert(page.includes(heading), heading);
|
||||
assert(!page.includes('<details>'));
|
||||
assert(page.includes('./reference/measurement-contracts.mdx'));
|
||||
|
||||
@@ -1,17 +1,46 @@
|
||||
import {test} from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import {readFileSync, existsSync} from 'node:fs';
|
||||
import {runInNewContext} from 'node:vm';
|
||||
import ts from 'typescript';
|
||||
const read = p => readFileSync(p, 'utf8');
|
||||
|
||||
test('Strategy has one canonical Target, then Roadmap, without a landing menu duplicate', () => {
|
||||
const sidebar = read('sidebars/strategy.ts').split('strategySidebar: [')[1].split(']')[0];
|
||||
const ids = [...sidebar.matchAll(/'([^']+)'/g)].map(match => match[1]);
|
||||
assert.deepEqual(ids, ['target-operating-model', 'roadmap', 'skills-governance', 'skills-quality', 'skills-adoption', 'measurement', 'skills-maintenance']);
|
||||
assert.equal(ids.filter(id => id === 'target-operating-model').length, 1);
|
||||
test('Strategy has Target, Roadmap, a linked Skills Adoption category and Autonomous Agent', () => {
|
||||
const compiled = ts.transpileModule(read('sidebars/strategy.ts'), {compilerOptions:{module:ts.ModuleKind.CommonJS}}).outputText;
|
||||
const sandbox = {exports:{}};
|
||||
runInNewContext(compiled, sandbox);
|
||||
const sidebar = JSON.parse(JSON.stringify(sandbox.exports.default.strategySidebar));
|
||||
assert.deepEqual(sidebar, ['target-operating-model', 'roadmap', {
|
||||
type:'category', label:'Stage - 01 - Skills Adoption',
|
||||
link:{type:'doc', id:'stage-01-skills-adoption'}, collapsed:true,
|
||||
items:[
|
||||
{type:'doc', id:'skills-governance', label:'Governance'},
|
||||
{type:'doc', id:'skills-quality', label:'Quality'},
|
||||
{type:'doc', id:'skills-adoption', label:'Adoption'},
|
||||
{type:'doc', id:'measurement', label:'Measurement'},
|
||||
{type:'doc', id:'skills-maintenance', label:'Maintenance'},
|
||||
],
|
||||
}, 'stage-02-autonomous-agent']);
|
||||
assert.match(read('docs/strategy/target-operating-model.mdx'), /^sidebar_label: Target$/m);
|
||||
assert.match(read('docusaurus.config.ts'), /type: 'docSidebar', docsPluginId: 'strategy', sidebarId: 'strategySidebar', label: 'Strategy'/);
|
||||
});
|
||||
|
||||
test('stage overviews explain the foundation and future without replacing topic content', () => {
|
||||
const first = read('docs/strategy/stage-01-skills-adoption.mdx');
|
||||
const second = read('docs/strategy/stage-02-autonomous-agent.mdx');
|
||||
for (const [id, title, page] of [
|
||||
['stage-01-skills-adoption', 'Stage - 01 - Skills Adoption', first],
|
||||
['stage-02-autonomous-agent', 'Stage - 02 - Autonomous Agent', second],
|
||||
]) {
|
||||
assert(page.includes(`id: ${id}\ntitle: ${title}`));
|
||||
for (const link of ['./roadmap.mdx', './target-operating-model.mdx']) assert(page.includes(link));
|
||||
}
|
||||
for (const id of ['skills-governance','skills-quality','skills-adoption','measurement','skills-maintenance']) assert(first.includes(`./${id}.mdx`));
|
||||
for (const marker of ['human + AI Agent','Delivery first','order is not yet decided','KPIs','baseline','topology','feedback','new current situation']) assert(first.includes(marker), marker);
|
||||
for (const marker of ['future','proven skills','measurements','working practices','direction and review','not deployed autonomy','approved KPI thresholds']) assert(second.includes(marker), marker);
|
||||
assert.match(read('docs/strategy/measurement.mdx'), /^title: Skills Measurement\nsidebar_label: Measurement$/m);
|
||||
});
|
||||
|
||||
test('old Strategy entry redirects to Target instead of maintaining a second document', () => {
|
||||
assert(!existsSync('docs/strategy/index.mdx'));
|
||||
assert.match(read('docusaurus.config.ts'), /'@docusaurus\/plugin-client-redirects'/);
|
||||
|
||||
@@ -3,9 +3,10 @@ import assert from 'node:assert/strict';
|
||||
import {readFileSync, readdirSync} from 'node:fs';
|
||||
const read = p => readFileSync(p, 'utf8');
|
||||
const model = JSON.parse(read('research/ai-adoption/strategy-model.json'));
|
||||
test('seven canonical strategy pages preserve target boundary and separate evidence', () => {
|
||||
test('seven existing strategy pages and two stage overviews preserve canonical routes', () => {
|
||||
assert.equal(model.pages.length, 7);
|
||||
assert.equal(readdirSync('docs/strategy').filter(p => p.endsWith('.mdx')).length, 7);
|
||||
assert.deepEqual(readdirSync('docs/strategy').filter(p => p.endsWith('.mdx')).sort(),
|
||||
[...model.pages.map(({id}) => `${id}.mdx`), 'stage-01-skills-adoption.mdx', 'stage-02-autonomous-agent.mdx'].sort());
|
||||
for (const {id} of model.pages) {
|
||||
const page = read(`docs/strategy/${id}.mdx`);
|
||||
assert(page.includes(`id: ${id}`));
|
||||
|
||||
+7
-2
@@ -21,10 +21,15 @@ if (process.argv.includes('--build')) {
|
||||
const redirect = read('build/strategy/index.html');
|
||||
assert(redirect.includes('/eldorado-v1/documentation/strategy/target-operating-model/'));
|
||||
assert(redirect.includes('window.location.href') && redirect.includes('http-equiv="refresh"') && !redirect.includes('archify-panel'), 'Landing must redirect, not duplicate Target');
|
||||
for (const {id, title} of model.pages) {
|
||||
const strategyPages = [...model.pages,
|
||||
{id:'stage-01-skills-adoption', title:'Stage - 01 - Skills Adoption'},
|
||||
{id:'stage-02-autonomous-agent', title:'Stage - 02 - Autonomous Agent'},
|
||||
];
|
||||
for (const {id, title} of strategyPages) {
|
||||
const route = `strategy/${id === 'index' ? '' : `${id}/`}index.html`;
|
||||
const page = read(join('build',route));
|
||||
assert(page.includes(title) && page.includes('Target operating model'), route);
|
||||
assert(page.includes(title), route);
|
||||
if (!id.startsWith('stage-')) assert(page.includes('Target operating model'), route);
|
||||
assert(indexes.includes(title), `Missing indexed Strategy page: ${id}`);
|
||||
for (const match of page.matchAll(/href="(\/eldorado-v1\/documentation\/[^"?#]*)/g)) {
|
||||
const local = decodeURIComponent(match[1].replace('/eldorado-v1/documentation/',''));
|
||||
|
||||
+20
-1
@@ -1,2 +1,21 @@
|
||||
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
|
||||
export default {strategySidebar: ['target-operating-model', 'roadmap', 'skills-governance', 'skills-quality', 'skills-adoption', 'measurement', 'skills-maintenance']} satisfies SidebarsConfig;
|
||||
export default {
|
||||
strategySidebar: [
|
||||
'target-operating-model',
|
||||
'roadmap',
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Stage - 01 - Skills Adoption',
|
||||
link: {type: 'doc', id: 'stage-01-skills-adoption'},
|
||||
collapsed: true,
|
||||
items: [
|
||||
{type: 'doc', id: 'skills-governance', label: 'Governance'},
|
||||
{type: 'doc', id: 'skills-quality', label: 'Quality'},
|
||||
{type: 'doc', id: 'skills-adoption', label: 'Adoption'},
|
||||
{type: 'doc', id: 'measurement', label: 'Measurement'},
|
||||
{type: 'doc', id: 'skills-maintenance', label: 'Maintenance'},
|
||||
],
|
||||
},
|
||||
'stage-02-autonomous-agent',
|
||||
],
|
||||
} satisfies SidebarsConfig;
|
||||
Reference in new issue
Block a user