@codedrifters/configulator 0.0.272 → 0.0.273

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.mts CHANGED
@@ -3436,6 +3436,39 @@ declare function renderExtractApiProcedure(): string;
3436
3436
  * (see `orchestratorBundle.procedures`).
3437
3437
  */
3438
3438
  declare const extractApiProcedure: AgentProcedure;
3439
+ /**
3440
+ * Render the shell body of the `.claude/procedures/check-links.sh`
3441
+ * helper. Exported so the docs-sync bundle can register it as an
3442
+ * `AgentProcedure` and the bundles test suite can assert on the
3443
+ * script's contents.
3444
+ *
3445
+ * The helper wraps two external tools — `astro check` (internal
3446
+ * links) and `lychee` (external `https://…` URLs) — and normalizes
3447
+ * their per-finding output into a single JSON-array stream of
3448
+ * `{ url, docPath, line, kind, reason }` records on stdout. The
3449
+ * downstream docs-sync scan phase (#519/#520) consumes that stream
3450
+ * and decides which findings are advisory and which block the PR.
3451
+ *
3452
+ * Detection is **data**, not failure: the helper exits `0` whenever
3453
+ * a tool ran successfully, regardless of how many broken links it
3454
+ * reported. Non-zero exits are reserved for tool-level failures
3455
+ * (missing binary, config error, IO failure).
3456
+ *
3457
+ * Exit codes: `0` success, `1` usage error or unreadable docs
3458
+ * root, `2` a required external tool is missing, `3` a tool ran
3459
+ * but exited non-zero for a reason other than broken-link
3460
+ * detection.
3461
+ */
3462
+ declare function renderCheckLinksProcedure(): string;
3463
+ /**
3464
+ * `AgentProcedure` definition for `.claude/procedures/check-links.sh`.
3465
+ * Registered on the docs-sync bundle so it ships when the bundle is
3466
+ * force-included — matches the packaging of `extractApiProcedure`
3467
+ * above. Provides the link-integrity input the docs-sync scan phase
3468
+ * (#519/#520) consumes alongside API-extractor and TSDoc-coverage
3469
+ * findings.
3470
+ */
3471
+ declare const checkLinksProcedure: AgentProcedure;
3439
3472
  /**
3440
3473
  * Docs-sync bundle — scaffolding release.
3441
3474
  *
@@ -8441,4 +8474,4 @@ declare const COMPLETE_JOB_ID = "complete";
8441
8474
  */
8442
8475
  declare function addBuildCompleteJob(buildWorkflow: BuildWorkflow): void;
8443
8476
 
8444
- export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AGENT_TIER_ROLES, AGENT_TIER_VALUES, AgentConfig, type AgentConfigOptions, type AgentExpansionRules, type AgentFeaturesConfig, type AgentModel, type AgentPathsConfig, type AgentPlatform, type AgentPlatformOverrides, type AgentProcedure, type AgentRule, type AgentRuleBundle, type AgentRuleScope, type AgentSkill, type AgentSubAgent, type AgentSubAgentPlatformOverrides, type AgentTier, type AgentTierConfig, type AgentTierEntry, type AnalyzeTsDocCoverageOptions, ApiExtractor, type ApiExtractorOptions, type ApiExtractorReportOptions, type ApproveMergeUpgradeOptions, AstroConfig, type AstroConfigOptions, type AstroIntegrationSpec, AstroOutput, AstroProject, type AstroProjectOptions, type AwsAccount, AwsCdkProject, type AwsCdkProjectOptions, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, type AwsDeploymentTargetOptions, type AwsLocalDeploymentConfig, type AwsOrganization, type AwsRegion, AwsTeardownWorkflow, type AwsTeardownWorkflowOptions, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, type CiDeploymentConfig, type ClassTypeOptions, type ClaudeAutoModeConfig, type ClaudeHookAction, type ClaudeHookEntry, type ClaudeHooksConfig, type ClaudePermissionsConfig, type ClaudeRuleTarget, type ClaudeSandboxConfig, type ClaudeSettingsConfig, type CopilotHandoff, type CursorHookAction, type CursorHooksConfig, type CursorSettingsConfig, type CustomDocSection, DEFAULT_AC_THRESHOLDS, DEFAULT_AGENT_PATHS, DEFAULT_AGENT_TIERS, DEFAULT_API_EXTRACTOR_CONFIG_FILE, DEFAULT_API_EXTRACTOR_ENTRY_POINT, DEFAULT_API_EXTRACTOR_REPORT_FILENAME, DEFAULT_API_EXTRACTOR_REPORT_FOLDER, DEFAULT_DECOMPOSITION_TEMPLATE, DEFAULT_DELEGATE_TO_PR_REVIEWER, DEFAULT_DISPATCH_MODEL, DEFAULT_DISPATCH_TO_HOUSEKEEPING_RATIO, DEFAULT_HOUSEKEEPING_MODEL, DEFAULT_ISSUE_TEMPLATES_BUNDLE_PATH_PATTERNS, DEFAULT_ISSUE_TEMPLATES_EMIT_CHECKER, DEFAULT_ISSUE_TEMPLATES_EMIT_STARTER, DEFAULT_ISSUE_TEMPLATES_ENABLED, DEFAULT_ISSUE_TEMPLATES_PATH, DEFAULT_ISSUE_TEMPLATES_REQUIRE_REFERENCE, DEFAULT_MERGE_METHOD, DEFAULT_OFF_PEAK_CRON_EXAMPLE, DEFAULT_PARTIAL_UNBLOCK_COMMENT_TEMPLATE, DEFAULT_PRIORITY_LABELS, DEFAULT_PRODUCT_CONTEXT_PATH, DEFAULT_PROGRESS_FILES_ENABLED, DEFAULT_PROGRESS_FILES_FILENAME_PATTERN, DEFAULT_PROGRESS_FILES_FORMAT, DEFAULT_PROGRESS_FILES_STALE_AFTER_HOURS, DEFAULT_PROGRESS_FILES_STATE_DIR, DEFAULT_REQUIRE_LINKED_ISSUE, DEFAULT_REQUIRE_PRODUCT_CONTEXT, DEFAULT_SCHEDULED_TASKS_ROOT, DEFAULT_SCHEDULED_TASK_ENTRIES, DEFAULT_SHARED_EDITING_CONFLICT_STRATEGY, DEFAULT_SHARED_EDITING_EMIT_HELPER, DEFAULT_SHARED_EDITING_ENABLED, DEFAULT_SHARED_EDITING_VERIFY_COMMIT, DEFAULT_SHARED_INDEX_PATHS, DEFAULT_SKILL_EVALS_EMIT_RUNNER, DEFAULT_SKILL_EVALS_ENABLED, DEFAULT_SKILL_EVALS_SKILLS_ROOT, DEFAULT_SOURCES_THRESHOLDS, DEFAULT_STATE_FILE_PATH, DEFAULT_STATUS_LABELS, DEFAULT_TEARDOWN_BRANCH_PATTERNS, DEFAULT_TYPE_LABELS, DEFAULT_UNBLOCK_COMMENT_TEMPLATE, DEFAULT_UNBLOCK_DEPENDENTS_ENABLED, DEFAULT_WORKFLOW_DIAGRAMS_BUNDLE_PATH_PATTERNS, DEFAULT_WORKFLOW_DIAGRAMS_EMIT_CHECKER, DEFAULT_WORKFLOW_DIAGRAMS_EMIT_STARTER, DEFAULT_WORKFLOW_DIAGRAMS_ENABLED, DEFAULT_WORKFLOW_DIAGRAMS_PATH, DEFAULT_WORKFLOW_DIAGRAMS_REQUIRE_UPDATE, type DeployWorkflowOptions, type DeploymentMetadata, type DocReferenceRecord, type ExtractDocReferencesOptions, type FocusArea, type FocusAreaMatch, type FocusConfig, type GitBranch, type GitHubBoardMetadata, type GitHubProjectMetadata, type GitHubSprintMetadata, type IDependencyResolver, type IssueTemplatesConfig, JsiiFaker, LAYOUT_ENFORCEMENT, LAYOUT_ROOT_BY_PROJECT_TYPE, type LabelDefinition, type LayoutEnforcement, type LayoutViolation, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, MINIMUM_RELEASE_AGE, MONOREPO_LAYOUT, type McpServerConfig, type McpTransport, type MeetingArea, type MeetingScope, type MeetingType, type MeetingTypeKind, type MeetingsConfig, type MergeMethod, type MonorepoLayoutRoot, MonorepoProject, type MonorepoProjectOptions, type OrganizationMetadata, PREFLIGHT_MERGE_METHOD_VALUES, PROD_DEPLOY_NAME, PROGRESS_FILES_FORMAT_VALUES, PnpmWorkspace, type PnpmWorkspaceOptions, type PreflightMergeMethod, type PreflightPrConfig, type PriorityRule, type ProgressFilesConfig, ProjectMetadata, type ProjectMetadataOptions, REQUIREMENTS_WRITER_PATHS, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, type RemoteCacheOptions, type RepositoryMetadata, ResetTask, type ResetTaskOptions, type ResolvedAgentPaths, type ResolvedAgentTier, type ResolvedIssueTemplates, type ResolvedPreflightPr, type ResolvedProgressFiles, type ResolvedProjectMetadata, type ResolvedRunRatio, type ResolvedScheduledTask, type ResolvedScheduledTasks, type ResolvedScopeGate, type ResolvedSharedEditing, type ResolvedSkillEvals, type ResolvedUnblockDependents, type ResolvedWorkflowDiagrams, type RunRatioConfig, SCHEDULED_TASK_MODEL_VALUES, SCOPE_CLASS_VALUES, SHARED_EDITING_CONFLICT_STRATEGY_VALUES, STARLIGHT_ROLE, type ScheduledTaskEntry, type ScheduledTaskModel, type ScheduledTaskOverride, type ScheduledTasksConfig, type ScopeClass, type ScopeGateConfig, type ScopeGateThresholds, type SharedEditingConfig, type SkillEvalsConfig, type SlackMetadata, type SourceTierExamples, type StarlightEditLink, type StarlightLogo, StarlightProject, type StarlightProjectOptions, type StarlightRole, type StarlightSidebarItem, type StarlightSingletonViolation, type StarlightSocialLink, type SyncLabelsOptions, type TemplateResolveResult, TestRunner, TsDocCoverageKind, type TsDocCoverageRecord, TurboRepo, type TurboRepoOptions, TurboRepoTask, type TurboRepoTaskOptions, TypeScriptConfig, TypeScriptProject, type TypeScriptProjectOptions, UNKNOWN_TYPE_FALLBACK_TIER, type UnblockDependentsConfig, VERSION, VERSION_KEYS_SKIP, VERSION_NPM_PACKAGES, VSCodeConfig, type VersionKey, Vitest, type VitestConfigOptions, type VitestOptions, type WorkflowDiagramsConfig, addApproveMergeUpgradeWorkflow, addBuildCompleteJob, addSyncLabelsWorkflow, agendaBundle, analyzeTsDocCoverage, awsCdkBundle, baseBundle, bcmWriterBundle, buildBaseBundle, buildBcmWriterBundle, buildBuiltInBundles, buildBusinessModelsBundle, buildCheckBlockedProcedure, buildCompanyProfileBundle, buildCustomerProfileBundle, buildDocsSyncBundle, buildIndustryDiscoveryBundle, buildMaintenanceAuditBundle, buildOrchestratorConventionsContent, buildPeopleProfileBundle, buildRegulatoryResearchBundle, buildRequirementsAnalystBundle, buildRequirementsReviewerBundle, buildRequirementsWriterBundle, buildResearchPipelineBundle, buildSoftwareProfileBundle, buildStandardsResearchBundle, buildUnblockDependentsProcedure, businessModelsBundle, classifyIssueScope, classifyRun, companyProfileBundle, customerProfileBundle, docsSyncBundle, extractApiProcedure, extractDocReferences, formatLayoutViolation, formatStarlightSingletonViolation, getLatestEligibleVersion, githubWorkflowBundle, industryDiscoveryBundle, jestBundle, maintenanceAuditBundle, meetingAnalysisBundle, orchestratorBundle, peopleProfileBundle, pnpmBundle, prReviewBundle, projenBundle, regulatoryResearchBundle, renderAgentTierCaseStatement, renderAgentTierSection, renderCustomDocSectionBlock, renderCustomDocSections, renderExtractApiProcedure, renderFocusSection, renderIssueTemplatesBundleHook, renderIssueTemplatesCheckerScript, renderIssueTemplatesRuleContent, renderIssueTemplatesStarterPage, renderMeetingTypesSection, renderPreflightPrSection, renderPreflightPrShellHelpers, renderPriorityRulesSection, renderProgressFileName, renderProgressFilePath, renderProgressFilesBundleHook, renderProgressFilesRuleContent, renderRunRatioSection, renderRunRatioShellHelpers, renderScheduledTaskSkillFile, renderScheduledTasksSection, renderScopeGateSection, renderScopeGateShellHelpers, renderSharedEditingBundleHook, renderSharedEditingHelperScript, renderSharedEditingRuleContent, renderSkillEvalsBundleHook, renderSkillEvalsRuleContent, renderSkillEvalsRunnerScript, renderSourceTierExamples, renderUnblockDependentsScript, renderUnblockDependentsSection, renderWorkflowDiagramsBundleHook, renderWorkflowDiagramsCheckerScript, renderWorkflowDiagramsRuleContent, renderWorkflowDiagramsStarterPage, requirementsAnalystBundle, requirementsReviewerBundle, requirementsWriterBundle, researchPipelineBundle, resolveAgentPaths, resolveAgentTiers, resolveAstroProjectOutdir, resolveAwsCdkProjectOutdir, resolveIssueTemplates, resolveModelAlias, resolveOrchestratorAssets, resolveOutdirFromPackageName, resolvePreflightPr, resolveProgressFiles, resolveRunRatio, resolveScheduledTasks, resolveScopeGate, resolveSharedEditing, resolveSkillEvals, resolveTemplateVariables, resolveTypeScriptProjectOutdir, resolveUnblockDependents, resolveWorkflowDiagrams, slackBundle, softwareProfileBundle, standardsResearchBundle, turborepoBundle, typescriptBundle, validateAgentTierConfig, validateIssueTemplatesConfig, validateMonorepoLayout, validatePreflightPrConfig, validateProgressFilesConfig, validateRunRatioConfig, validateScheduledTasksConfig, validateScopeGateConfig, validateSharedEditingConfig, validateSkillEvalsConfig, validateStarlightSingleton, validateUnblockDependentsConfig, validateWorkflowDiagramsConfig, vitestBundle };
8477
+ export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AGENT_TIER_ROLES, AGENT_TIER_VALUES, AgentConfig, type AgentConfigOptions, type AgentExpansionRules, type AgentFeaturesConfig, type AgentModel, type AgentPathsConfig, type AgentPlatform, type AgentPlatformOverrides, type AgentProcedure, type AgentRule, type AgentRuleBundle, type AgentRuleScope, type AgentSkill, type AgentSubAgent, type AgentSubAgentPlatformOverrides, type AgentTier, type AgentTierConfig, type AgentTierEntry, type AnalyzeTsDocCoverageOptions, ApiExtractor, type ApiExtractorOptions, type ApiExtractorReportOptions, type ApproveMergeUpgradeOptions, AstroConfig, type AstroConfigOptions, type AstroIntegrationSpec, AstroOutput, AstroProject, type AstroProjectOptions, type AwsAccount, AwsCdkProject, type AwsCdkProjectOptions, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, type AwsDeploymentTargetOptions, type AwsLocalDeploymentConfig, type AwsOrganization, type AwsRegion, AwsTeardownWorkflow, type AwsTeardownWorkflowOptions, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, type CiDeploymentConfig, type ClassTypeOptions, type ClaudeAutoModeConfig, type ClaudeHookAction, type ClaudeHookEntry, type ClaudeHooksConfig, type ClaudePermissionsConfig, type ClaudeRuleTarget, type ClaudeSandboxConfig, type ClaudeSettingsConfig, type CopilotHandoff, type CursorHookAction, type CursorHooksConfig, type CursorSettingsConfig, type CustomDocSection, DEFAULT_AC_THRESHOLDS, DEFAULT_AGENT_PATHS, DEFAULT_AGENT_TIERS, DEFAULT_API_EXTRACTOR_CONFIG_FILE, DEFAULT_API_EXTRACTOR_ENTRY_POINT, DEFAULT_API_EXTRACTOR_REPORT_FILENAME, DEFAULT_API_EXTRACTOR_REPORT_FOLDER, DEFAULT_DECOMPOSITION_TEMPLATE, DEFAULT_DELEGATE_TO_PR_REVIEWER, DEFAULT_DISPATCH_MODEL, DEFAULT_DISPATCH_TO_HOUSEKEEPING_RATIO, DEFAULT_HOUSEKEEPING_MODEL, DEFAULT_ISSUE_TEMPLATES_BUNDLE_PATH_PATTERNS, DEFAULT_ISSUE_TEMPLATES_EMIT_CHECKER, DEFAULT_ISSUE_TEMPLATES_EMIT_STARTER, DEFAULT_ISSUE_TEMPLATES_ENABLED, DEFAULT_ISSUE_TEMPLATES_PATH, DEFAULT_ISSUE_TEMPLATES_REQUIRE_REFERENCE, DEFAULT_MERGE_METHOD, DEFAULT_OFF_PEAK_CRON_EXAMPLE, DEFAULT_PARTIAL_UNBLOCK_COMMENT_TEMPLATE, DEFAULT_PRIORITY_LABELS, DEFAULT_PRODUCT_CONTEXT_PATH, DEFAULT_PROGRESS_FILES_ENABLED, DEFAULT_PROGRESS_FILES_FILENAME_PATTERN, DEFAULT_PROGRESS_FILES_FORMAT, DEFAULT_PROGRESS_FILES_STALE_AFTER_HOURS, DEFAULT_PROGRESS_FILES_STATE_DIR, DEFAULT_REQUIRE_LINKED_ISSUE, DEFAULT_REQUIRE_PRODUCT_CONTEXT, DEFAULT_SCHEDULED_TASKS_ROOT, DEFAULT_SCHEDULED_TASK_ENTRIES, DEFAULT_SHARED_EDITING_CONFLICT_STRATEGY, DEFAULT_SHARED_EDITING_EMIT_HELPER, DEFAULT_SHARED_EDITING_ENABLED, DEFAULT_SHARED_EDITING_VERIFY_COMMIT, DEFAULT_SHARED_INDEX_PATHS, DEFAULT_SKILL_EVALS_EMIT_RUNNER, DEFAULT_SKILL_EVALS_ENABLED, DEFAULT_SKILL_EVALS_SKILLS_ROOT, DEFAULT_SOURCES_THRESHOLDS, DEFAULT_STATE_FILE_PATH, DEFAULT_STATUS_LABELS, DEFAULT_TEARDOWN_BRANCH_PATTERNS, DEFAULT_TYPE_LABELS, DEFAULT_UNBLOCK_COMMENT_TEMPLATE, DEFAULT_UNBLOCK_DEPENDENTS_ENABLED, DEFAULT_WORKFLOW_DIAGRAMS_BUNDLE_PATH_PATTERNS, DEFAULT_WORKFLOW_DIAGRAMS_EMIT_CHECKER, DEFAULT_WORKFLOW_DIAGRAMS_EMIT_STARTER, DEFAULT_WORKFLOW_DIAGRAMS_ENABLED, DEFAULT_WORKFLOW_DIAGRAMS_PATH, DEFAULT_WORKFLOW_DIAGRAMS_REQUIRE_UPDATE, type DeployWorkflowOptions, type DeploymentMetadata, type DocReferenceRecord, type ExtractDocReferencesOptions, type FocusArea, type FocusAreaMatch, type FocusConfig, type GitBranch, type GitHubBoardMetadata, type GitHubProjectMetadata, type GitHubSprintMetadata, type IDependencyResolver, type IssueTemplatesConfig, JsiiFaker, LAYOUT_ENFORCEMENT, LAYOUT_ROOT_BY_PROJECT_TYPE, type LabelDefinition, type LayoutEnforcement, type LayoutViolation, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, MINIMUM_RELEASE_AGE, MONOREPO_LAYOUT, type McpServerConfig, type McpTransport, type MeetingArea, type MeetingScope, type MeetingType, type MeetingTypeKind, type MeetingsConfig, type MergeMethod, type MonorepoLayoutRoot, MonorepoProject, type MonorepoProjectOptions, type OrganizationMetadata, PREFLIGHT_MERGE_METHOD_VALUES, PROD_DEPLOY_NAME, PROGRESS_FILES_FORMAT_VALUES, PnpmWorkspace, type PnpmWorkspaceOptions, type PreflightMergeMethod, type PreflightPrConfig, type PriorityRule, type ProgressFilesConfig, ProjectMetadata, type ProjectMetadataOptions, REQUIREMENTS_WRITER_PATHS, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, type RemoteCacheOptions, type RepositoryMetadata, ResetTask, type ResetTaskOptions, type ResolvedAgentPaths, type ResolvedAgentTier, type ResolvedIssueTemplates, type ResolvedPreflightPr, type ResolvedProgressFiles, type ResolvedProjectMetadata, type ResolvedRunRatio, type ResolvedScheduledTask, type ResolvedScheduledTasks, type ResolvedScopeGate, type ResolvedSharedEditing, type ResolvedSkillEvals, type ResolvedUnblockDependents, type ResolvedWorkflowDiagrams, type RunRatioConfig, SCHEDULED_TASK_MODEL_VALUES, SCOPE_CLASS_VALUES, SHARED_EDITING_CONFLICT_STRATEGY_VALUES, STARLIGHT_ROLE, type ScheduledTaskEntry, type ScheduledTaskModel, type ScheduledTaskOverride, type ScheduledTasksConfig, type ScopeClass, type ScopeGateConfig, type ScopeGateThresholds, type SharedEditingConfig, type SkillEvalsConfig, type SlackMetadata, type SourceTierExamples, type StarlightEditLink, type StarlightLogo, StarlightProject, type StarlightProjectOptions, type StarlightRole, type StarlightSidebarItem, type StarlightSingletonViolation, type StarlightSocialLink, type SyncLabelsOptions, type TemplateResolveResult, TestRunner, TsDocCoverageKind, type TsDocCoverageRecord, TurboRepo, type TurboRepoOptions, TurboRepoTask, type TurboRepoTaskOptions, TypeScriptConfig, TypeScriptProject, type TypeScriptProjectOptions, UNKNOWN_TYPE_FALLBACK_TIER, type UnblockDependentsConfig, VERSION, VERSION_KEYS_SKIP, VERSION_NPM_PACKAGES, VSCodeConfig, type VersionKey, Vitest, type VitestConfigOptions, type VitestOptions, type WorkflowDiagramsConfig, addApproveMergeUpgradeWorkflow, addBuildCompleteJob, addSyncLabelsWorkflow, agendaBundle, analyzeTsDocCoverage, awsCdkBundle, baseBundle, bcmWriterBundle, buildBaseBundle, buildBcmWriterBundle, buildBuiltInBundles, buildBusinessModelsBundle, buildCheckBlockedProcedure, buildCompanyProfileBundle, buildCustomerProfileBundle, buildDocsSyncBundle, buildIndustryDiscoveryBundle, buildMaintenanceAuditBundle, buildOrchestratorConventionsContent, buildPeopleProfileBundle, buildRegulatoryResearchBundle, buildRequirementsAnalystBundle, buildRequirementsReviewerBundle, buildRequirementsWriterBundle, buildResearchPipelineBundle, buildSoftwareProfileBundle, buildStandardsResearchBundle, buildUnblockDependentsProcedure, businessModelsBundle, checkLinksProcedure, classifyIssueScope, classifyRun, companyProfileBundle, customerProfileBundle, docsSyncBundle, extractApiProcedure, extractDocReferences, formatLayoutViolation, formatStarlightSingletonViolation, getLatestEligibleVersion, githubWorkflowBundle, industryDiscoveryBundle, jestBundle, maintenanceAuditBundle, meetingAnalysisBundle, orchestratorBundle, peopleProfileBundle, pnpmBundle, prReviewBundle, projenBundle, regulatoryResearchBundle, renderAgentTierCaseStatement, renderAgentTierSection, renderCheckLinksProcedure, renderCustomDocSectionBlock, renderCustomDocSections, renderExtractApiProcedure, renderFocusSection, renderIssueTemplatesBundleHook, renderIssueTemplatesCheckerScript, renderIssueTemplatesRuleContent, renderIssueTemplatesStarterPage, renderMeetingTypesSection, renderPreflightPrSection, renderPreflightPrShellHelpers, renderPriorityRulesSection, renderProgressFileName, renderProgressFilePath, renderProgressFilesBundleHook, renderProgressFilesRuleContent, renderRunRatioSection, renderRunRatioShellHelpers, renderScheduledTaskSkillFile, renderScheduledTasksSection, renderScopeGateSection, renderScopeGateShellHelpers, renderSharedEditingBundleHook, renderSharedEditingHelperScript, renderSharedEditingRuleContent, renderSkillEvalsBundleHook, renderSkillEvalsRuleContent, renderSkillEvalsRunnerScript, renderSourceTierExamples, renderUnblockDependentsScript, renderUnblockDependentsSection, renderWorkflowDiagramsBundleHook, renderWorkflowDiagramsCheckerScript, renderWorkflowDiagramsRuleContent, renderWorkflowDiagramsStarterPage, requirementsAnalystBundle, requirementsReviewerBundle, requirementsWriterBundle, researchPipelineBundle, resolveAgentPaths, resolveAgentTiers, resolveAstroProjectOutdir, resolveAwsCdkProjectOutdir, resolveIssueTemplates, resolveModelAlias, resolveOrchestratorAssets, resolveOutdirFromPackageName, resolvePreflightPr, resolveProgressFiles, resolveRunRatio, resolveScheduledTasks, resolveScopeGate, resolveSharedEditing, resolveSkillEvals, resolveTemplateVariables, resolveTypeScriptProjectOutdir, resolveUnblockDependents, resolveWorkflowDiagrams, slackBundle, softwareProfileBundle, standardsResearchBundle, turborepoBundle, typescriptBundle, validateAgentTierConfig, validateIssueTemplatesConfig, validateMonorepoLayout, validatePreflightPrConfig, validateProgressFilesConfig, validateRunRatioConfig, validateScheduledTasksConfig, validateScopeGateConfig, validateSharedEditingConfig, validateSkillEvalsConfig, validateStarlightSingleton, validateUnblockDependentsConfig, validateWorkflowDiagramsConfig, vitestBundle };
package/lib/index.d.ts CHANGED
@@ -3485,6 +3485,39 @@ declare function renderExtractApiProcedure(): string;
3485
3485
  * (see `orchestratorBundle.procedures`).
3486
3486
  */
3487
3487
  declare const extractApiProcedure: AgentProcedure;
3488
+ /**
3489
+ * Render the shell body of the `.claude/procedures/check-links.sh`
3490
+ * helper. Exported so the docs-sync bundle can register it as an
3491
+ * `AgentProcedure` and the bundles test suite can assert on the
3492
+ * script's contents.
3493
+ *
3494
+ * The helper wraps two external tools — `astro check` (internal
3495
+ * links) and `lychee` (external `https://…` URLs) — and normalizes
3496
+ * their per-finding output into a single JSON-array stream of
3497
+ * `{ url, docPath, line, kind, reason }` records on stdout. The
3498
+ * downstream docs-sync scan phase (#519/#520) consumes that stream
3499
+ * and decides which findings are advisory and which block the PR.
3500
+ *
3501
+ * Detection is **data**, not failure: the helper exits `0` whenever
3502
+ * a tool ran successfully, regardless of how many broken links it
3503
+ * reported. Non-zero exits are reserved for tool-level failures
3504
+ * (missing binary, config error, IO failure).
3505
+ *
3506
+ * Exit codes: `0` success, `1` usage error or unreadable docs
3507
+ * root, `2` a required external tool is missing, `3` a tool ran
3508
+ * but exited non-zero for a reason other than broken-link
3509
+ * detection.
3510
+ */
3511
+ declare function renderCheckLinksProcedure(): string;
3512
+ /**
3513
+ * `AgentProcedure` definition for `.claude/procedures/check-links.sh`.
3514
+ * Registered on the docs-sync bundle so it ships when the bundle is
3515
+ * force-included — matches the packaging of `extractApiProcedure`
3516
+ * above. Provides the link-integrity input the docs-sync scan phase
3517
+ * (#519/#520) consumes alongside API-extractor and TSDoc-coverage
3518
+ * findings.
3519
+ */
3520
+ declare const checkLinksProcedure: AgentProcedure;
3488
3521
  /**
3489
3522
  * Docs-sync bundle — scaffolding release.
3490
3523
  *
@@ -8490,5 +8523,5 @@ declare const COMPLETE_JOB_ID = "complete";
8490
8523
  */
8491
8524
  declare function addBuildCompleteJob(buildWorkflow: BuildWorkflow): void;
8492
8525
 
8493
- export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AGENT_TIER_ROLES, AGENT_TIER_VALUES, AgentConfig, ApiExtractor, AstroConfig, AstroOutput, AstroProject, AwsCdkProject, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, AwsTeardownWorkflow, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, DEFAULT_AC_THRESHOLDS, DEFAULT_AGENT_PATHS, DEFAULT_AGENT_TIERS, DEFAULT_API_EXTRACTOR_CONFIG_FILE, DEFAULT_API_EXTRACTOR_ENTRY_POINT, DEFAULT_API_EXTRACTOR_REPORT_FILENAME, DEFAULT_API_EXTRACTOR_REPORT_FOLDER, DEFAULT_DECOMPOSITION_TEMPLATE, DEFAULT_DELEGATE_TO_PR_REVIEWER, DEFAULT_DISPATCH_MODEL, DEFAULT_DISPATCH_TO_HOUSEKEEPING_RATIO, DEFAULT_HOUSEKEEPING_MODEL, DEFAULT_ISSUE_TEMPLATES_BUNDLE_PATH_PATTERNS, DEFAULT_ISSUE_TEMPLATES_EMIT_CHECKER, DEFAULT_ISSUE_TEMPLATES_EMIT_STARTER, DEFAULT_ISSUE_TEMPLATES_ENABLED, DEFAULT_ISSUE_TEMPLATES_PATH, DEFAULT_ISSUE_TEMPLATES_REQUIRE_REFERENCE, DEFAULT_MERGE_METHOD, DEFAULT_OFF_PEAK_CRON_EXAMPLE, DEFAULT_PARTIAL_UNBLOCK_COMMENT_TEMPLATE, DEFAULT_PRIORITY_LABELS, DEFAULT_PRODUCT_CONTEXT_PATH, DEFAULT_PROGRESS_FILES_ENABLED, DEFAULT_PROGRESS_FILES_FILENAME_PATTERN, DEFAULT_PROGRESS_FILES_FORMAT, DEFAULT_PROGRESS_FILES_STALE_AFTER_HOURS, DEFAULT_PROGRESS_FILES_STATE_DIR, DEFAULT_REQUIRE_LINKED_ISSUE, DEFAULT_REQUIRE_PRODUCT_CONTEXT, DEFAULT_SCHEDULED_TASKS_ROOT, DEFAULT_SCHEDULED_TASK_ENTRIES, DEFAULT_SHARED_EDITING_CONFLICT_STRATEGY, DEFAULT_SHARED_EDITING_EMIT_HELPER, DEFAULT_SHARED_EDITING_ENABLED, DEFAULT_SHARED_EDITING_VERIFY_COMMIT, DEFAULT_SHARED_INDEX_PATHS, DEFAULT_SKILL_EVALS_EMIT_RUNNER, DEFAULT_SKILL_EVALS_ENABLED, DEFAULT_SKILL_EVALS_SKILLS_ROOT, DEFAULT_SOURCES_THRESHOLDS, DEFAULT_STATE_FILE_PATH, DEFAULT_STATUS_LABELS, DEFAULT_TEARDOWN_BRANCH_PATTERNS, DEFAULT_TYPE_LABELS, DEFAULT_UNBLOCK_COMMENT_TEMPLATE, DEFAULT_UNBLOCK_DEPENDENTS_ENABLED, DEFAULT_WORKFLOW_DIAGRAMS_BUNDLE_PATH_PATTERNS, DEFAULT_WORKFLOW_DIAGRAMS_EMIT_CHECKER, DEFAULT_WORKFLOW_DIAGRAMS_EMIT_STARTER, DEFAULT_WORKFLOW_DIAGRAMS_ENABLED, DEFAULT_WORKFLOW_DIAGRAMS_PATH, DEFAULT_WORKFLOW_DIAGRAMS_REQUIRE_UPDATE, JsiiFaker, LAYOUT_ENFORCEMENT, LAYOUT_ROOT_BY_PROJECT_TYPE, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, MINIMUM_RELEASE_AGE, MONOREPO_LAYOUT, MonorepoProject, PREFLIGHT_MERGE_METHOD_VALUES, PROD_DEPLOY_NAME, PROGRESS_FILES_FORMAT_VALUES, PnpmWorkspace, ProjectMetadata, REQUIREMENTS_WRITER_PATHS, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, ResetTask, SCHEDULED_TASK_MODEL_VALUES, SCOPE_CLASS_VALUES, SHARED_EDITING_CONFLICT_STRATEGY_VALUES, STARLIGHT_ROLE, StarlightProject, TestRunner, TsDocCoverageKind, TurboRepo, TurboRepoTask, TypeScriptConfig, TypeScriptProject, UNKNOWN_TYPE_FALLBACK_TIER, VERSION, VERSION_KEYS_SKIP, VERSION_NPM_PACKAGES, VSCodeConfig, Vitest, addApproveMergeUpgradeWorkflow, addBuildCompleteJob, addSyncLabelsWorkflow, agendaBundle, analyzeTsDocCoverage, awsCdkBundle, baseBundle, bcmWriterBundle, buildBaseBundle, buildBcmWriterBundle, buildBuiltInBundles, buildBusinessModelsBundle, buildCheckBlockedProcedure, buildCompanyProfileBundle, buildCustomerProfileBundle, buildDocsSyncBundle, buildIndustryDiscoveryBundle, buildMaintenanceAuditBundle, buildOrchestratorConventionsContent, buildPeopleProfileBundle, buildRegulatoryResearchBundle, buildRequirementsAnalystBundle, buildRequirementsReviewerBundle, buildRequirementsWriterBundle, buildResearchPipelineBundle, buildSoftwareProfileBundle, buildStandardsResearchBundle, buildUnblockDependentsProcedure, businessModelsBundle, classifyIssueScope, classifyRun, companyProfileBundle, customerProfileBundle, docsSyncBundle, extractApiProcedure, extractDocReferences, formatLayoutViolation, formatStarlightSingletonViolation, getLatestEligibleVersion, githubWorkflowBundle, industryDiscoveryBundle, jestBundle, maintenanceAuditBundle, meetingAnalysisBundle, orchestratorBundle, peopleProfileBundle, pnpmBundle, prReviewBundle, projenBundle, regulatoryResearchBundle, renderAgentTierCaseStatement, renderAgentTierSection, renderCustomDocSectionBlock, renderCustomDocSections, renderExtractApiProcedure, renderFocusSection, renderIssueTemplatesBundleHook, renderIssueTemplatesCheckerScript, renderIssueTemplatesRuleContent, renderIssueTemplatesStarterPage, renderMeetingTypesSection, renderPreflightPrSection, renderPreflightPrShellHelpers, renderPriorityRulesSection, renderProgressFileName, renderProgressFilePath, renderProgressFilesBundleHook, renderProgressFilesRuleContent, renderRunRatioSection, renderRunRatioShellHelpers, renderScheduledTaskSkillFile, renderScheduledTasksSection, renderScopeGateSection, renderScopeGateShellHelpers, renderSharedEditingBundleHook, renderSharedEditingHelperScript, renderSharedEditingRuleContent, renderSkillEvalsBundleHook, renderSkillEvalsRuleContent, renderSkillEvalsRunnerScript, renderSourceTierExamples, renderUnblockDependentsScript, renderUnblockDependentsSection, renderWorkflowDiagramsBundleHook, renderWorkflowDiagramsCheckerScript, renderWorkflowDiagramsRuleContent, renderWorkflowDiagramsStarterPage, requirementsAnalystBundle, requirementsReviewerBundle, requirementsWriterBundle, researchPipelineBundle, resolveAgentPaths, resolveAgentTiers, resolveAstroProjectOutdir, resolveAwsCdkProjectOutdir, resolveIssueTemplates, resolveModelAlias, resolveOrchestratorAssets, resolveOutdirFromPackageName, resolvePreflightPr, resolveProgressFiles, resolveRunRatio, resolveScheduledTasks, resolveScopeGate, resolveSharedEditing, resolveSkillEvals, resolveTemplateVariables, resolveTypeScriptProjectOutdir, resolveUnblockDependents, resolveWorkflowDiagrams, slackBundle, softwareProfileBundle, standardsResearchBundle, turborepoBundle, typescriptBundle, validateAgentTierConfig, validateIssueTemplatesConfig, validateMonorepoLayout, validatePreflightPrConfig, validateProgressFilesConfig, validateRunRatioConfig, validateScheduledTasksConfig, validateScopeGateConfig, validateSharedEditingConfig, validateSkillEvalsConfig, validateStarlightSingleton, validateUnblockDependentsConfig, validateWorkflowDiagramsConfig, vitestBundle };
8526
+ export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AGENT_TIER_ROLES, AGENT_TIER_VALUES, AgentConfig, ApiExtractor, AstroConfig, AstroOutput, AstroProject, AwsCdkProject, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, AwsTeardownWorkflow, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, DEFAULT_AC_THRESHOLDS, DEFAULT_AGENT_PATHS, DEFAULT_AGENT_TIERS, DEFAULT_API_EXTRACTOR_CONFIG_FILE, DEFAULT_API_EXTRACTOR_ENTRY_POINT, DEFAULT_API_EXTRACTOR_REPORT_FILENAME, DEFAULT_API_EXTRACTOR_REPORT_FOLDER, DEFAULT_DECOMPOSITION_TEMPLATE, DEFAULT_DELEGATE_TO_PR_REVIEWER, DEFAULT_DISPATCH_MODEL, DEFAULT_DISPATCH_TO_HOUSEKEEPING_RATIO, DEFAULT_HOUSEKEEPING_MODEL, DEFAULT_ISSUE_TEMPLATES_BUNDLE_PATH_PATTERNS, DEFAULT_ISSUE_TEMPLATES_EMIT_CHECKER, DEFAULT_ISSUE_TEMPLATES_EMIT_STARTER, DEFAULT_ISSUE_TEMPLATES_ENABLED, DEFAULT_ISSUE_TEMPLATES_PATH, DEFAULT_ISSUE_TEMPLATES_REQUIRE_REFERENCE, DEFAULT_MERGE_METHOD, DEFAULT_OFF_PEAK_CRON_EXAMPLE, DEFAULT_PARTIAL_UNBLOCK_COMMENT_TEMPLATE, DEFAULT_PRIORITY_LABELS, DEFAULT_PRODUCT_CONTEXT_PATH, DEFAULT_PROGRESS_FILES_ENABLED, DEFAULT_PROGRESS_FILES_FILENAME_PATTERN, DEFAULT_PROGRESS_FILES_FORMAT, DEFAULT_PROGRESS_FILES_STALE_AFTER_HOURS, DEFAULT_PROGRESS_FILES_STATE_DIR, DEFAULT_REQUIRE_LINKED_ISSUE, DEFAULT_REQUIRE_PRODUCT_CONTEXT, DEFAULT_SCHEDULED_TASKS_ROOT, DEFAULT_SCHEDULED_TASK_ENTRIES, DEFAULT_SHARED_EDITING_CONFLICT_STRATEGY, DEFAULT_SHARED_EDITING_EMIT_HELPER, DEFAULT_SHARED_EDITING_ENABLED, DEFAULT_SHARED_EDITING_VERIFY_COMMIT, DEFAULT_SHARED_INDEX_PATHS, DEFAULT_SKILL_EVALS_EMIT_RUNNER, DEFAULT_SKILL_EVALS_ENABLED, DEFAULT_SKILL_EVALS_SKILLS_ROOT, DEFAULT_SOURCES_THRESHOLDS, DEFAULT_STATE_FILE_PATH, DEFAULT_STATUS_LABELS, DEFAULT_TEARDOWN_BRANCH_PATTERNS, DEFAULT_TYPE_LABELS, DEFAULT_UNBLOCK_COMMENT_TEMPLATE, DEFAULT_UNBLOCK_DEPENDENTS_ENABLED, DEFAULT_WORKFLOW_DIAGRAMS_BUNDLE_PATH_PATTERNS, DEFAULT_WORKFLOW_DIAGRAMS_EMIT_CHECKER, DEFAULT_WORKFLOW_DIAGRAMS_EMIT_STARTER, DEFAULT_WORKFLOW_DIAGRAMS_ENABLED, DEFAULT_WORKFLOW_DIAGRAMS_PATH, DEFAULT_WORKFLOW_DIAGRAMS_REQUIRE_UPDATE, JsiiFaker, LAYOUT_ENFORCEMENT, LAYOUT_ROOT_BY_PROJECT_TYPE, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, MINIMUM_RELEASE_AGE, MONOREPO_LAYOUT, MonorepoProject, PREFLIGHT_MERGE_METHOD_VALUES, PROD_DEPLOY_NAME, PROGRESS_FILES_FORMAT_VALUES, PnpmWorkspace, ProjectMetadata, REQUIREMENTS_WRITER_PATHS, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, ResetTask, SCHEDULED_TASK_MODEL_VALUES, SCOPE_CLASS_VALUES, SHARED_EDITING_CONFLICT_STRATEGY_VALUES, STARLIGHT_ROLE, StarlightProject, TestRunner, TsDocCoverageKind, TurboRepo, TurboRepoTask, TypeScriptConfig, TypeScriptProject, UNKNOWN_TYPE_FALLBACK_TIER, VERSION, VERSION_KEYS_SKIP, VERSION_NPM_PACKAGES, VSCodeConfig, Vitest, addApproveMergeUpgradeWorkflow, addBuildCompleteJob, addSyncLabelsWorkflow, agendaBundle, analyzeTsDocCoverage, awsCdkBundle, baseBundle, bcmWriterBundle, buildBaseBundle, buildBcmWriterBundle, buildBuiltInBundles, buildBusinessModelsBundle, buildCheckBlockedProcedure, buildCompanyProfileBundle, buildCustomerProfileBundle, buildDocsSyncBundle, buildIndustryDiscoveryBundle, buildMaintenanceAuditBundle, buildOrchestratorConventionsContent, buildPeopleProfileBundle, buildRegulatoryResearchBundle, buildRequirementsAnalystBundle, buildRequirementsReviewerBundle, buildRequirementsWriterBundle, buildResearchPipelineBundle, buildSoftwareProfileBundle, buildStandardsResearchBundle, buildUnblockDependentsProcedure, businessModelsBundle, checkLinksProcedure, classifyIssueScope, classifyRun, companyProfileBundle, customerProfileBundle, docsSyncBundle, extractApiProcedure, extractDocReferences, formatLayoutViolation, formatStarlightSingletonViolation, getLatestEligibleVersion, githubWorkflowBundle, industryDiscoveryBundle, jestBundle, maintenanceAuditBundle, meetingAnalysisBundle, orchestratorBundle, peopleProfileBundle, pnpmBundle, prReviewBundle, projenBundle, regulatoryResearchBundle, renderAgentTierCaseStatement, renderAgentTierSection, renderCheckLinksProcedure, renderCustomDocSectionBlock, renderCustomDocSections, renderExtractApiProcedure, renderFocusSection, renderIssueTemplatesBundleHook, renderIssueTemplatesCheckerScript, renderIssueTemplatesRuleContent, renderIssueTemplatesStarterPage, renderMeetingTypesSection, renderPreflightPrSection, renderPreflightPrShellHelpers, renderPriorityRulesSection, renderProgressFileName, renderProgressFilePath, renderProgressFilesBundleHook, renderProgressFilesRuleContent, renderRunRatioSection, renderRunRatioShellHelpers, renderScheduledTaskSkillFile, renderScheduledTasksSection, renderScopeGateSection, renderScopeGateShellHelpers, renderSharedEditingBundleHook, renderSharedEditingHelperScript, renderSharedEditingRuleContent, renderSkillEvalsBundleHook, renderSkillEvalsRuleContent, renderSkillEvalsRunnerScript, renderSourceTierExamples, renderUnblockDependentsScript, renderUnblockDependentsSection, renderWorkflowDiagramsBundleHook, renderWorkflowDiagramsCheckerScript, renderWorkflowDiagramsRuleContent, renderWorkflowDiagramsStarterPage, requirementsAnalystBundle, requirementsReviewerBundle, requirementsWriterBundle, researchPipelineBundle, resolveAgentPaths, resolveAgentTiers, resolveAstroProjectOutdir, resolveAwsCdkProjectOutdir, resolveIssueTemplates, resolveModelAlias, resolveOrchestratorAssets, resolveOutdirFromPackageName, resolvePreflightPr, resolveProgressFiles, resolveRunRatio, resolveScheduledTasks, resolveScopeGate, resolveSharedEditing, resolveSkillEvals, resolveTemplateVariables, resolveTypeScriptProjectOutdir, resolveUnblockDependents, resolveWorkflowDiagrams, slackBundle, softwareProfileBundle, standardsResearchBundle, turborepoBundle, typescriptBundle, validateAgentTierConfig, validateIssueTemplatesConfig, validateMonorepoLayout, validatePreflightPrConfig, validateProgressFilesConfig, validateRunRatioConfig, validateScheduledTasksConfig, validateScopeGateConfig, validateSharedEditingConfig, validateSkillEvalsConfig, validateStarlightSingleton, validateUnblockDependentsConfig, validateWorkflowDiagramsConfig, vitestBundle };
8494
8527
  export type { AgentConfigOptions, AgentExpansionRules, AgentFeaturesConfig, AgentModel, AgentPathsConfig, AgentPlatform, AgentPlatformOverrides, AgentProcedure, AgentRule, AgentRuleBundle, AgentRuleScope, AgentSkill, AgentSubAgent, AgentSubAgentPlatformOverrides, AgentTier, AgentTierConfig, AgentTierEntry, AnalyzeTsDocCoverageOptions, ApiExtractorOptions, ApiExtractorReportOptions, ApproveMergeUpgradeOptions, AstroConfigOptions, AstroIntegrationSpec, AstroProjectOptions, AwsAccount, AwsCdkProjectOptions, AwsDeploymentTargetOptions, AwsLocalDeploymentConfig, AwsOrganization, AwsRegion, AwsTeardownWorkflowOptions, CiDeploymentConfig, ClassTypeOptions, ClaudeAutoModeConfig, ClaudeHookAction, ClaudeHookEntry, ClaudeHooksConfig, ClaudePermissionsConfig, ClaudeRuleTarget, ClaudeSandboxConfig, ClaudeSettingsConfig, CopilotHandoff, CursorHookAction, CursorHooksConfig, CursorSettingsConfig, CustomDocSection, DeployWorkflowOptions, DeploymentMetadata, DocReferenceRecord, ExtractDocReferencesOptions, FocusArea, FocusAreaMatch, FocusConfig, GitBranch, GitHubBoardMetadata, GitHubProjectMetadata, GitHubSprintMetadata, IDependencyResolver, IssueTemplatesConfig, LabelDefinition, LayoutEnforcement, LayoutViolation, McpServerConfig, McpTransport, MeetingArea, MeetingScope, MeetingType, MeetingTypeKind, MeetingsConfig, MergeMethod, MonorepoLayoutRoot, MonorepoProjectOptions, OrganizationMetadata, PnpmWorkspaceOptions, PreflightMergeMethod, PreflightPrConfig, PriorityRule, ProgressFilesConfig, ProjectMetadataOptions, RemoteCacheOptions, RepositoryMetadata, ResetTaskOptions, ResolvedAgentPaths, ResolvedAgentTier, ResolvedIssueTemplates, ResolvedPreflightPr, ResolvedProgressFiles, ResolvedProjectMetadata, ResolvedRunRatio, ResolvedScheduledTask, ResolvedScheduledTasks, ResolvedScopeGate, ResolvedSharedEditing, ResolvedSkillEvals, ResolvedUnblockDependents, ResolvedWorkflowDiagrams, RunRatioConfig, ScheduledTaskEntry, ScheduledTaskModel, ScheduledTaskOverride, ScheduledTasksConfig, ScopeClass, ScopeGateConfig, ScopeGateThresholds, SharedEditingConfig, SkillEvalsConfig, SlackMetadata, SourceTierExamples, StarlightEditLink, StarlightLogo, StarlightProjectOptions, StarlightRole, StarlightSidebarItem, StarlightSingletonViolation, StarlightSocialLink, SyncLabelsOptions, TemplateResolveResult, TsDocCoverageRecord, TurboRepoOptions, TurboRepoTaskOptions, TypeScriptProjectOptions, UnblockDependentsConfig, VersionKey, VitestConfigOptions, VitestOptions, WorkflowDiagramsConfig };
package/lib/index.js CHANGED
@@ -310,6 +310,7 @@ __export(index_exports, {
310
310
  buildStandardsResearchBundle: () => buildStandardsResearchBundle,
311
311
  buildUnblockDependentsProcedure: () => buildUnblockDependentsProcedure,
312
312
  businessModelsBundle: () => businessModelsBundle,
313
+ checkLinksProcedure: () => checkLinksProcedure,
313
314
  classifyIssueScope: () => classifyIssueScope,
314
315
  classifyRun: () => classifyRun,
315
316
  companyProfileBundle: () => companyProfileBundle,
@@ -333,6 +334,7 @@ __export(index_exports, {
333
334
  regulatoryResearchBundle: () => regulatoryResearchBundle,
334
335
  renderAgentTierCaseStatement: () => renderAgentTierCaseStatement,
335
336
  renderAgentTierSection: () => renderAgentTierSection,
337
+ renderCheckLinksProcedure: () => renderCheckLinksProcedure,
336
338
  renderCustomDocSectionBlock: () => renderCustomDocSectionBlock,
337
339
  renderCustomDocSections: () => renderCustomDocSections,
338
340
  renderExtractApiProcedure: () => renderExtractApiProcedure,
@@ -8978,6 +8980,295 @@ var extractApiProcedure = {
8978
8980
  description: "Run @microsoft/api-extractor for a single package and write the .api.md rollup to the scratch folder declared by the package's api-extractor.json. Rollups are regenerate-on-scan per docs-sync epic #448 resolved decision #3 \u2014 never committed to git.",
8979
8981
  content: renderExtractApiProcedure()
8980
8982
  };
8983
+ function renderCheckLinksProcedure() {
8984
+ return [
8985
+ "#!/usr/bin/env bash",
8986
+ "# check-links.sh \u2014 Link integrity checker for the Starlight docs site.",
8987
+ "#",
8988
+ "# Usage:",
8989
+ "# .claude/procedures/check-links.sh <mode> <docs-root> [<site-dir>]",
8990
+ "#",
8991
+ "# Where:",
8992
+ "# <mode> \u2014 one of `internal`, `external`, or `all`.",
8993
+ "# <docs-root> \u2014 path to the markdown content tree",
8994
+ "# (e.g. `docs/src/content/docs`). Walked recursively",
8995
+ "# for `*.md` / `*.mdx` files.",
8996
+ "# <site-dir> \u2014 (optional, internal/all only) path to the Starlight",
8997
+ "# project root that contains `astro.config.{ts,mjs,js}`.",
8998
+ "# Defaults to two levels up from `<docs-root>` so the",
8999
+ "# standard Starlight layout (`<site>/src/content/docs`)",
9000
+ "# resolves automatically.",
9001
+ "#",
9002
+ "# Wraps two external tools:",
9003
+ "# - `astro check` \u2014 internal links and content-collection refs",
9004
+ "# inside the Starlight site.",
9005
+ "# - `lychee` \u2014 external `https://\u2026` URLs across the docs tree",
9006
+ "# (https://github.com/lycheeverse/lychee).",
9007
+ "#",
9008
+ "# Output (stdout, single JSON array):",
9009
+ "#",
9010
+ "# [",
9011
+ "# {",
9012
+ '# "url": "<href as written in the markdown source>",',
9013
+ '# "docPath": "<path relative to <docs-root>>",',
9014
+ '# "line": <1-indexed line number>,',
9015
+ '# "kind": "internal" | "external",',
9016
+ '# "reason": "<short tool-supplied diagnostic>"',
9017
+ "# },",
9018
+ "# ...",
9019
+ "# ]",
9020
+ "#",
9021
+ "# An empty array (`[]`) is emitted when no broken links are found.",
9022
+ "# Detection is **data**, not failure: this helper exits 0 when a",
9023
+ "# tool ran successfully and reported zero or more broken links.",
9024
+ "# The downstream docs-sync scan phase (#519/#520) is responsible",
9025
+ "# for deciding which findings are advisory and which block.",
9026
+ "#",
9027
+ "# Exit codes:",
9028
+ "# 0 \u2014 every requested tool ran successfully; findings (zero or",
9029
+ "# more) are on stdout as a JSON array.",
9030
+ "# 1 \u2014 usage error (missing args, unreadable docs root).",
9031
+ "# 2 \u2014 a required external tool is not installed or not on PATH",
9032
+ "# (`astro` / `lychee` / `node` / `jq`).",
9033
+ "# 3 \u2014 a tool ran but exited non-zero for a reason other than",
9034
+ "# broken-link detection (config error, IO error, network",
9035
+ "# failure for lychee, etc.). Stderr carries the diagnostic.",
9036
+ "#",
9037
+ "# The script never edits files. Diagnostics flow to stderr; the",
9038
+ "# only thing on stdout is the normalized JSON array.",
9039
+ "",
9040
+ "set -uo pipefail",
9041
+ "",
9042
+ "err() {",
9043
+ ' printf "check-links.sh: %s\\n" "$*" >&2',
9044
+ "}",
9045
+ "",
9046
+ 'if [ "$#" -lt 2 ]; then',
9047
+ ' err "usage: check-links.sh <internal|external|all> <docs-root> [<site-dir>]"',
9048
+ " exit 1",
9049
+ "fi",
9050
+ "",
9051
+ 'mode="$1"',
9052
+ 'docs_root="$2"',
9053
+ 'site_dir="${3:-}"',
9054
+ "",
9055
+ 'case "$mode" in',
9056
+ " internal | external | all) ;;",
9057
+ " *)",
9058
+ ` err "unknown mode '$mode' \u2014 expected 'internal', 'external', or 'all'"`,
9059
+ " exit 1",
9060
+ " ;;",
9061
+ "esac",
9062
+ "",
9063
+ 'if [ ! -d "$docs_root" ]; then',
9064
+ ' err "docs root not found: $docs_root"',
9065
+ " exit 1",
9066
+ "fi",
9067
+ "",
9068
+ 'if [ -z "$site_dir" ]; then',
9069
+ " # Standard Starlight layout: <site>/src/content/docs. Walk two",
9070
+ " # parents up from the content root to recover the site dir.",
9071
+ ' site_dir="$(cd "$docs_root/../../.." && pwd)"',
9072
+ "fi",
9073
+ "",
9074
+ "# `jq` is required to merge the per-tool JSON output streams. Fail",
9075
+ "# fast with the dedicated tool-missing exit code if it is absent.",
9076
+ "if ! command -v jq >/dev/null 2>&1; then",
9077
+ ' err "jq is required but not on PATH"',
9078
+ " exit 2",
9079
+ "fi",
9080
+ "",
9081
+ 'tmp_dir="$(mktemp -d -t check-links-XXXXXX)"',
9082
+ "# shellcheck disable=SC2064",
9083
+ `trap "rm -rf '$tmp_dir'" EXIT`,
9084
+ "",
9085
+ 'internal_json="$tmp_dir/internal.json"',
9086
+ 'external_json="$tmp_dir/external.json"',
9087
+ 'printf "[]" > "$internal_json"',
9088
+ 'printf "[]" > "$external_json"',
9089
+ "",
9090
+ "# ---------------------------------------------------------------",
9091
+ "# Internal-link check",
9092
+ "# ---------------------------------------------------------------",
9093
+ "# `astro check` runs inside the Starlight project root and walks",
9094
+ "# content collections to validate internal references. It exits",
9095
+ "# non-zero when references are broken \u2014 that is a *finding* for",
9096
+ "# this helper, not a tool failure, so we capture stderr and parse",
9097
+ "# it into the normalized record shape rather than propagating the",
9098
+ "# non-zero exit.",
9099
+ 'if [ "$mode" = "internal" ] || [ "$mode" = "all" ]; then',
9100
+ " if ! command -v node >/dev/null 2>&1; then",
9101
+ ' err "node is required but not on PATH"',
9102
+ " exit 2",
9103
+ " fi",
9104
+ "",
9105
+ ' if [ ! -d "$site_dir" ]; then',
9106
+ ' err "site dir not found: $site_dir"',
9107
+ " exit 1",
9108
+ " fi",
9109
+ "",
9110
+ " # Locate the astro binary in the site's local node_modules first",
9111
+ " # so the version matches what `pnpm install` resolved for the",
9112
+ " # Starlight site. Fall back to a workspace-aware `pnpm exec`.",
9113
+ ' if [ -x "$site_dir/node_modules/.bin/astro" ]; then',
9114
+ ' astro_bin=("$site_dir/node_modules/.bin/astro")',
9115
+ " elif command -v pnpm >/dev/null 2>&1; then",
9116
+ ' astro_bin=(pnpm --dir "$site_dir" exec astro)',
9117
+ " else",
9118
+ ' err "astro binary not found in $site_dir/node_modules/.bin and pnpm is unavailable"',
9119
+ " exit 2",
9120
+ " fi",
9121
+ "",
9122
+ ' astro_log="$tmp_dir/astro.log"',
9123
+ " set +e",
9124
+ ' ( cd "$site_dir" && "${astro_bin[@]}" check ) > "$astro_log" 2>&1',
9125
+ " astro_status=$?",
9126
+ " set -e",
9127
+ "",
9128
+ " # `astro check` exits 1 on findings and >=2 on tool failure.",
9129
+ " # Translate to the normalized record stream regardless of exit.",
9130
+ ' if [ "$astro_status" -ge 2 ]; then',
9131
+ ' err "astro check exited with status $astro_status (tool failure)"',
9132
+ ' cat "$astro_log" >&2 || true',
9133
+ " exit 3",
9134
+ " fi",
9135
+ "",
9136
+ " # Parse the line-oriented log into JSON records. The `astro",
9137
+ " # check` output for a broken reference looks like:",
9138
+ " #",
9139
+ " # src/content/docs/foo.md:42:8 - error <code>: <reason>",
9140
+ " #",
9141
+ " # The helper extracts `<docPath>`, `<line>`, and `<reason>` and",
9142
+ " # synthesises a `url` field by quoting the offending excerpt",
9143
+ " # when astro reports one (it does not always); when no excerpt",
9144
+ " # is available we fall back to an empty string so the schema",
9145
+ " # stays uniform.",
9146
+ ` awk -v docs_root="$docs_root" -v site_dir="$site_dir" '`,
9147
+ " BEGIN {",
9148
+ ' printf "[";',
9149
+ " first = 1;",
9150
+ " }",
9151
+ ' # Match "<path>:<line>:<col> - <severity> <code>: <message>"',
9152
+ " /^.+:[0-9]+:[0-9]+ - / {",
9153
+ ' split($0, head, " - ");',
9154
+ ' n = split(head[1], loc, ":");',
9155
+ " file = loc[1];",
9156
+ ' for (i = 2; i < n - 1; i++) { file = file ":" loc[i]; }',
9157
+ " line = loc[n - 1];",
9158
+ ' message = "";',
9159
+ " for (i = 2; i <= length(head); i++) {",
9160
+ ' if (i > 2) message = message " - ";',
9161
+ " message = message head[i];",
9162
+ " }",
9163
+ " # Resolve the file relative to docs_root for stability.",
9164
+ " abs = file;",
9165
+ ' if (substr(abs, 1, 1) != "/") {',
9166
+ ' abs = site_dir "/" abs;',
9167
+ " }",
9168
+ ' sub(docs_root "/", "", abs);',
9169
+ ' gsub(/"/, "\\\\\\"", message);',
9170
+ ' gsub(/"/, "\\\\\\"", abs);',
9171
+ ' if (!first) printf ",";',
9172
+ " first = 0;",
9173
+ ' printf "{\\"url\\":\\"\\",\\"docPath\\":\\"%s\\",\\"line\\":%s,\\"kind\\":\\"internal\\",\\"reason\\":\\"%s\\"}", abs, line, message;',
9174
+ " }",
9175
+ " END {",
9176
+ ' printf "]";',
9177
+ " }",
9178
+ ` ' "$astro_log" > "$internal_json"`,
9179
+ "",
9180
+ " # Validate the JSON we synthesised. Catches awk escaping bugs",
9181
+ " # before we hand the payload to the merge step.",
9182
+ ' if ! jq -e . "$internal_json" >/dev/null 2>&1; then',
9183
+ ' err "failed to normalize astro check output to JSON"',
9184
+ ' cat "$internal_json" >&2 || true',
9185
+ " exit 3",
9186
+ " fi",
9187
+ "fi",
9188
+ "",
9189
+ "# ---------------------------------------------------------------",
9190
+ "# External-link check",
9191
+ "# ---------------------------------------------------------------",
9192
+ "# `lychee` walks the markdown tree and reports unreachable URLs.",
9193
+ "# Its `--format json` output is structured per-link; we project",
9194
+ "# only the failed entries into the normalized record shape.",
9195
+ 'if [ "$mode" = "external" ] || [ "$mode" = "all" ]; then',
9196
+ " if ! command -v lychee >/dev/null 2>&1; then",
9197
+ ' err "lychee is required but not on PATH (https://github.com/lycheeverse/lychee)"',
9198
+ " exit 2",
9199
+ " fi",
9200
+ "",
9201
+ ' lychee_json="$tmp_dir/lychee.json"',
9202
+ " set +e",
9203
+ " # `--no-progress` avoids interactive carriage-returns mangling",
9204
+ " # the JSON. `--format json` emits a single object whose `fail_map`",
9205
+ " # field lists the broken URLs grouped by source file.",
9206
+ " # `--exclude-mail` skips mailto: links (out of scope for this",
9207
+ " # helper).",
9208
+ ' lychee --no-progress --format json --exclude-mail "$docs_root" > "$lychee_json" 2>"$tmp_dir/lychee.err"',
9209
+ " lychee_status=$?",
9210
+ " set -e",
9211
+ "",
9212
+ " # lychee exits 0 when every link resolved, 2 when one or more",
9213
+ " # links failed. Anything else is a tool failure (config, IO).",
9214
+ ' if [ "$lychee_status" -ne 0 ] && [ "$lychee_status" -ne 2 ]; then',
9215
+ ' err "lychee exited with status $lychee_status (tool failure)"',
9216
+ ' cat "$tmp_dir/lychee.err" >&2 || true',
9217
+ " exit 3",
9218
+ " fi",
9219
+ "",
9220
+ " # Project lychee's `fail_map` into the normalized record shape.",
9221
+ ' # The `fail_map` is `{ "<source-path>": [ { url, status: { details? } }, ... ] }`.',
9222
+ " # lychee does not report a line number for every match, so we",
9223
+ " # default to 0 when it is missing (downstream consumers treat",
9224
+ ' # 0 as "unknown line").',
9225
+ ` jq --arg root "$docs_root" '`,
9226
+ " def trim_root($p; $r):",
9227
+ ' if ($p | startswith($r + "/")) then ($p | ltrimstr($r + "/"))',
9228
+ ' elif ($p == $r) then ""',
9229
+ " else $p end;",
9230
+ " [",
9231
+ " ( .fail_map // {} ) as $map",
9232
+ " | $map | to_entries[]",
9233
+ " | .key as $src",
9234
+ " | .value[]",
9235
+ " | {",
9236
+ ' url: (.url // ""),',
9237
+ " docPath: trim_root($src; $root),",
9238
+ " line: ((.line // 0) | tonumber? // 0),",
9239
+ ' kind: "external",',
9240
+ ' reason: ( (.status.details // .status.text // .status.code // "broken") | tostring )',
9241
+ " }",
9242
+ " ]",
9243
+ ` ' "$lychee_json" > "$external_json" 2>"$tmp_dir/lychee.parse.err"`,
9244
+ "",
9245
+ ' if ! jq -e . "$external_json" >/dev/null 2>&1; then',
9246
+ ' err "failed to parse lychee JSON output"',
9247
+ ' cat "$tmp_dir/lychee.parse.err" >&2 || true',
9248
+ ' cat "$lychee_json" >&2 || true',
9249
+ " exit 3",
9250
+ " fi",
9251
+ "fi",
9252
+ "",
9253
+ "# ---------------------------------------------------------------",
9254
+ "# Merge & emit",
9255
+ "# ---------------------------------------------------------------",
9256
+ "# Sort records deterministically (kind, docPath, line, url) so",
9257
+ "# downstream consumers can compare reports across runs without",
9258
+ "# fighting platform-specific ordering noise.",
9259
+ "jq -s '",
9260
+ " add",
9261
+ " | sort_by(.kind, .docPath, .line, .url)",
9262
+ `' "$internal_json" "$external_json"`,
9263
+ "",
9264
+ "exit 0"
9265
+ ].join("\n");
9266
+ }
9267
+ var checkLinksProcedure = {
9268
+ name: "check-links.sh",
9269
+ description: "Link integrity checker that wraps `astro check` (internal links) and `lychee` (external URLs) and normalizes their output into a single JSON-array stream of { url, docPath, line, kind, reason } records. Detection is data: the helper exits 0 when a tool ran successfully regardless of how many broken links it reported. Non-zero exits are reserved for tool-level failures.",
9270
+ content: renderCheckLinksProcedure()
9271
+ };
8981
9272
  function buildDocsSyncBundle(paths = DEFAULT_AGENT_PATHS) {
8982
9273
  return {
8983
9274
  name: "docs-sync",
@@ -9027,7 +9318,7 @@ function buildDocsSyncBundle(paths = DEFAULT_AGENT_PATHS) {
9027
9318
  ],
9028
9319
  skills: [buildDocsSyncPrSkill(), buildDocsSyncAuditSkill()],
9029
9320
  subAgents: [buildDocsSyncSubAgent(paths)],
9030
- procedures: [extractApiProcedure],
9321
+ procedures: [extractApiProcedure, checkLinksProcedure],
9031
9322
  labels: [
9032
9323
  {
9033
9324
  name: "type:docs-sync",
@@ -31491,6 +31782,7 @@ var TypeScriptConfig = class extends import_projen23.Component {
31491
31782
  buildStandardsResearchBundle,
31492
31783
  buildUnblockDependentsProcedure,
31493
31784
  businessModelsBundle,
31785
+ checkLinksProcedure,
31494
31786
  classifyIssueScope,
31495
31787
  classifyRun,
31496
31788
  companyProfileBundle,
@@ -31514,6 +31806,7 @@ var TypeScriptConfig = class extends import_projen23.Component {
31514
31806
  regulatoryResearchBundle,
31515
31807
  renderAgentTierCaseStatement,
31516
31808
  renderAgentTierSection,
31809
+ renderCheckLinksProcedure,
31517
31810
  renderCustomDocSectionBlock,
31518
31811
  renderCustomDocSections,
31519
31812
  renderExtractApiProcedure,