feat: add software-engineering skill v0.2

Add cloud/skills/software-engineering/SKILL.md (686 lines, v0.2, appendix with 9 role templates travels inside SKILL.md because skill_seed only copies SKILL.md, not templates/). Update skill pack tests: EXPECTED set and real-pack list now include software-engineering, plus an explicit seed test asserting it lands at skills/software-engineering/SKILL.md, contains the appendix, and tenant edits are never overwritten. One-line wording tweak in the architect template avoids the existing secret-scan false positive on the substring sk- inside agent-task-contract.md; deployed file sha256 bd0436399ac05c6131b9281dad00973e50d13540e4c56ad21f21e2b5209bae8e (40759 bytes, 686 lines).
This commit is contained in:
host committed 2026-10-30 06:00:31 +00:00
1 parent 5e562d8413
commit 885bf38790
3 files changed
+705 -3

No files matched your search

+1 -1
View File
@@ -12,7 +12,7 @@ from pathlib import Path
SKILLS_DIR = Path(__file__).resolve().parents[1] / "skills"
EXPECTED = {"live-info", "document-tools", "image-workflow",
"browser-automation"}
"browser-automation", "software-engineering"}
def _frontmatter(text):
+18 -2
View File
@@ -63,11 +63,12 @@ class SkillSeedHelperTestCase(unittest.TestCase):
self.assertEqual(out["skills_skipped_differ"], ["live-info"])
self.assertEqual(open(dest).read(), "tenant edited version\n")
def test_real_pack_lists_three_skills(self):
def test_real_pack_lists_all_skills(self):
names = [n for n, _p in list_skills()]
self.assertEqual(names,
["browser-automation", "document-tools",
"image-workflow", "live-info"])
"image-workflow", "live-info",
"software-engineering"])
class WorkerSkillSeedTestCase(unittest.TestCase):
@@ -116,6 +117,21 @@ class WorkerSkillSeedTestCase(unittest.TestCase):
self.assertTrue(os.path.exists(path), path)
self.assertIn("name: %s" % name, open(path).read())
def test_flag_on_seeds_software_engineering_and_user_edit_survives(self):
worker = self._worker(seed_skills=True)
dirs = worker._tenant_dirs("projA")
path = self._skill_path(dirs, "software-engineering")
self.assertTrue(os.path.exists(path), path)
text = open(path).read()
self.assertIn("name: software-engineering", text)
# v0.2 P0-1: the appendix travels inside SKILL.md itself,
# because skill_seed only copies SKILL.md, not templates/.
self.assertIn("附录角色:00-coordinator", text)
self.assertIn("附录角色:08-shared-core", text)
open(path, "w").write("tenant edited version\n")
worker._tenant_dirs("projA")
self.assertEqual(open(path).read(), "tenant edited version\n")
def test_old_tenant_merges_and_user_edit_survives(self):
worker = self._worker()
dirs = worker._tenant_dirs("projA")