Skip to content

Commit 014c0a8

Browse files
authored
Merge pull request #115 from cyberfabric/up-sdlc-and-bugfixes
fix(kit): register new manifest resources in core.toml during kit update
2 parents 8900cfa + 58e85e6 commit 014c0a8

File tree

21 files changed

+1323
-18
lines changed

21 files changed

+1323
-18
lines changed

.agents/skills/cypilot/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
name: cypilot
3-
description: "Invoke when user asks to do something with Cypilot, or wants to analyze/validate artifacts, or create/generate/implement anything using Cypilot workflows, or plan phased execution. Core capabilities: workflow routing (plan/analyze/generate/auto-config); deterministic validation (structure, cross-refs, traceability, TOC); code↔artifact traceability with @cpt-* markers; spec coverage measurement; ID search/navigation; init/bootstrap; adapter + registry discovery; auto-configuration of brownfield projects (scan conventions, generate rules); kit management (install/update with file-level diff); TOC generation; agent integrations (Windsurf, Cursor, Claude, Copilot, OpenAI). Kit sdlc: Artifacts: ADR, CODEBASE, DECOMPOSITION, DESIGN, FEATURE, PR-CODE-REVIEW-TEMPLATE, PR-REVIEW, PR-STATUS-REPORT-TEMPLATE, PRD; Workflows: pr-review, pr-status."
3+
description: "Invoke when user asks to do something with Cypilot, or wants to analyze/validate artifacts, or create/generate/implement anything using Cypilot workflows, or plan phased execution. Core capabilities: workflow routing (plan/analyze/generate/auto-config); deterministic validation (structure, cross-refs, traceability, TOC); code↔artifact traceability with @cpt-* markers; spec coverage measurement; ID search/navigation; init/bootstrap; adapter + registry discovery; auto-configuration of brownfield projects (scan conventions, generate rules); kit management (install/update with file-level diff); TOC generation; agent integrations (Windsurf, Cursor, Claude, Copilot, OpenAI). Kit sdlc: Artifacts: ADR, CODEBASE, DECOMPOSITION, DESIGN, FEATURE, PR-CODE-REVIEW-TEMPLATE, PR-REVIEW, PR-STATUS-REPORT-TEMPLATE, PRD; Workflows: migrate-openspec, pr-review, pr-status."
44
---
55

66

.bootstrap/.core/skills/cypilot/scripts/cypilot/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def main(argv: Optional[List[str]] = None) -> int:
1717
from .cli import main as _main
1818
return _main(argv)
1919

20-
__version__ = "v3.0.14-beta"
20+
__version__ = "v3.0.15-beta"
2121

2222
__all__ = [
2323
# Main entry point

.bootstrap/.core/skills/cypilot/scripts/cypilot/commands/kit.py

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1602,9 +1602,32 @@ def update_kit(
16021602
# @cpt-end:cpt-cypilot-algo-kit-update:p1:inst-file-level-diff
16031603

16041604
# @cpt-begin:cpt-cypilot-algo-kit-update:p1:inst-update-core-toml
1605-
# Update version in core.toml from source (always, even if some files declined)
1606-
if source_version:
1607-
_register_kit_in_core_toml(config_dir, kit_slug, source_version, cypilot_dir, source=source)
1605+
# Sync resource bindings: merge existing with new resources from manifest
1606+
_merged_resources: Optional[Dict[str, Dict[str, str]]] = None
1607+
if _manifest is not None:
1608+
# Read existing bindings from core.toml
1609+
_existing_bindings = _read_kits_from_core_toml(config_dir).get(kit_slug, {}).get("resources", {})
1610+
_merged_resources = {}
1611+
# Preserve existing bindings
1612+
for res_id, binding in _existing_bindings.items():
1613+
if isinstance(binding, dict):
1614+
_merged_resources[res_id] = binding
1615+
elif isinstance(binding, str):
1616+
_merged_resources[res_id] = {"path": binding}
1617+
# Add new resources from manifest (if not already present)
1618+
kit_root_rel = f"config/kits/{kit_slug}"
1619+
for res in _manifest.resources:
1620+
if res.id not in _merged_resources:
1621+
# New resource — use default path
1622+
binding_path = f"{kit_root_rel}/{res.default_path}"
1623+
_merged_resources[res.id] = {"path": binding_path}
1624+
1625+
# Update version and resources in core.toml
1626+
if source_version or _merged_resources:
1627+
_register_kit_in_core_toml(
1628+
config_dir, kit_slug, source_version, cypilot_dir,
1629+
source=source, resources=_merged_resources,
1630+
)
16081631
# @cpt-end:cpt-cypilot-algo-kit-update:p1:inst-update-core-toml
16091632

16101633
# @cpt-begin:cpt-cypilot-algo-kit-update:p1:inst-collect-metadata

.bootstrap/.core/skills/cypilot/scripts/cypilot/utils/git_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def _redact_url(url: str) -> str:
3737
if "://" not in url and "@" in url and ":" in url:
3838
at_idx = url.index("@")
3939
return f"***{url[at_idx:]}"
40-
# Standard URLs: https://user:pass@host/path
40+
# Standard URLs: https://<user>:<token>@host/path
4141
from urllib.parse import urlsplit, urlunsplit
4242
parts = urlsplit(url)
4343
if parts.username or parts.password:

.bootstrap/.core/whatsnew.toml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,4 +148,11 @@ details = """\
148148
- **Git URL sources** — standalone workspace files support remote Git repos with branch pinning and namespace rules
149149
- **Cross-repo ID resolution** — `validate` and `list-ids` gain `--local-only` and `--source` flags for workspace-aware operations
150150
- **WorkspaceContext** — context upgrade from `CypilotContext` with lazy loading and graceful degradation for unreachable sources\
151+
"""
152+
153+
["v3.0.15-beta"]
154+
summary = "Secret scanner fix, kit update fix"
155+
details = """\
156+
- **Secret scanner fix** — sanitized high-entropy string in `git_utils.py` to avoid false positives from trufflehog3 and similar tools
157+
- **Fix: new manifest resources registered during kit update** — when a kit adds new resources in `manifest.toml`, `cpt kit update` now merges them into `core.toml` resource bindings instead of ignoring them\
151158
"""

.bootstrap/.gen/AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ ALWAYS open and follow `{cypilot_path}/.core/schemas/artifacts.schema.json` WHEN
88

99
ALWAYS open and follow `{cypilot_path}/.core/architecture/specs/artifacts-registry.md` WHEN working with artifacts.toml
1010

11-
# Cypilot Kit: SDLC (`cypilot-sdlc`)
11+
# Cypilot Kit: SDLC (`sdlc`)
1212

1313
Agent quick reference.
1414

.bootstrap/config/core.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ project_root = ".."
77
[kits.sdlc]
88
format = "Cypilot"
99
path = "config/kits/sdlc"
10-
version = "1.1.1"
10+
version = "1.2.0"
1111
source = "github:cyberfabric/cyber-pilot-kit-sdlc"
1212

1313
[kits.sdlc.resources]
@@ -100,3 +100,6 @@ path = "config/kits/sdlc/SKILL.md"
100100

101101
[kits.sdlc.resources.agents]
102102
path = "config/kits/sdlc/AGENTS.md"
103+
104+
[kits.sdlc.resources.workflow_migrate_openspec]
105+
path = "config/kits/sdlc/workflows/migrate-openspec.md"

.bootstrap/config/kits/sdlc/AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Cypilot Kit: SDLC (`cypilot-sdlc`)
1+
# Cypilot Kit: SDLC (`sdlc`)
22

33
Agent quick reference.
44

.bootstrap/config/kits/sdlc/SKILL.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
name: cypilot-sdlc
3-
description: "Artifacts: ADR, CODEBASE, DECOMPOSITION, DESIGN, FEATURE, PR-CODE-REVIEW-TEMPLATE, PR-REVIEW, PR-STATUS-REPORT-TEMPLATE, PRD; Workflows: pr-review, pr-status"
3+
description: "Artifacts: ADR, CODEBASE, DECOMPOSITION, DESIGN, FEATURE, PR-CODE-REVIEW-TEMPLATE, PR-REVIEW, PR-STATUS-REPORT-TEMPLATE, PRD; Workflows: migrate-openspec, pr-review, pr-status"
44
---
55

66
# Cypilot Skill — Kit `sdlc`
@@ -114,6 +114,22 @@ When routed to PR status:
114114
3. Use `python3 {scripts}/pr.py` as the script
115115
4. When target is `ALL` or no PR number given, run `pr.py list` first to show available PRs
116116

117+
## MIGRATION
118+
119+
### Migration Commands
120+
- `cypilot migrate-openspec` — migrate OpenSpec artifacts to Cypilot SDLC documents
121+
122+
### Migration Workflows
123+
124+
ALWAYS route to the `cypilot-migrate-openspec` workflow WHEN user intent matches OpenSpec migration patterns:
125+
- `migrate openspec`, `migrate from openspec`, `convert openspec`
126+
- `cypilot migrate-openspec`, `openspec to cypilot`
127+
- Any request to convert OpenSpec artifacts to Cypilot SDLC format
128+
129+
When routed to OpenSpec migration:
130+
1. Read `{workflow_migrate_openspec}` and follow its steps
131+
2. The workflow handles all configuration discovery and user interaction
132+
117133
## PRD
118134

119135
### PRD Commands

0 commit comments

Comments
 (0)