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:
1 parent
5e562d8413
commit
885bf38790
3 files changed
+705
-3
No files matched your search
@@ -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):
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in new issue
Block a user