ai-forge-cli 3.0.0__tar.gz → 3.0.1__tar.gz
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.
- {ai_forge_cli-3.0.0/src/ai_forge_cli.egg-info → ai_forge_cli-3.0.1}/PKG-INFO +1 -1
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/pyproject.toml +1 -1
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1/src/ai_forge_cli.egg-info}/PKG-INFO +1 -1
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/commands/init.py +7 -26
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/tests/test_context.py +10 -8
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/tests/test_crawler.py +2 -2
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/MANIFEST.in +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/README.md +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/setup.cfg +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/setup.py +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/ai_forge_cli.egg-info/SOURCES.txt +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/ai_forge_cli.egg-info/dependency_links.txt +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/ai_forge_cli.egg-info/entry_points.txt +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/ai_forge_cli.egg-info/requires.txt +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/ai_forge_cli.egg-info/top_level.txt +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/__init__.py +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/__main__.py +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/assets/audit_template.html +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/assets/forge_full_logo.drawio.svg +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/assets/forge_white_small.drawio.svg +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/commands/__init__.py +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/commands/audit.py +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/commands/base.py +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/commands/context.py +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/commands/crawl.py +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/common.py +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/crawler.py +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/forge.py +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/FRAMEWORK_V4.md +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/SCHEMA_REFERENCE_V4.md +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-build/SKILL.md +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-build/agents/openai.yaml +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-business/SKILL.md +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-business/agents/openai.yaml +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-hydrate/SKILL.md +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-hydrate/agents/openai.yaml +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-review/SKILL.md +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-review/agents/openai.yaml +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-schema/SKILL.md +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-schema/agents/openai.yaml +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-security/SKILL.md +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-security/agents/openai.yaml +0 -0
- {ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/yaml_io.py +0 -0
|
@@ -25,6 +25,7 @@ SKILL_SURFACES = [
|
|
|
25
25
|
".claude/skills",
|
|
26
26
|
".codex/skills",
|
|
27
27
|
".agents/skills",
|
|
28
|
+
".copilot/skills",
|
|
28
29
|
]
|
|
29
30
|
|
|
30
31
|
DOC_FILES = [
|
|
@@ -227,10 +228,13 @@ def _rewrite_skill_references(forge_root: Path) -> None:
|
|
|
227
228
|
for skill_name in SKILL_DIRS:
|
|
228
229
|
skill_path = forge_root / "skills" / skill_name / "SKILL.md"
|
|
229
230
|
text = skill_path.read_text(encoding="utf-8")
|
|
230
|
-
|
|
231
|
+
text = text.replace("../../SCHEMA_REFERENCE_V4.md", "forge/SCHEMA_REFERENCE_V4.md")
|
|
232
|
+
text = text.replace("../../FRAMEWORK_V4.md", "forge/FRAMEWORK_V4.md")
|
|
233
|
+
text = text.replace("../../USING_FORGE.md", "forge/USING_FORGE.md")
|
|
234
|
+
if "Read before starting:" in text and "forge/USING_FORGE.md" not in text:
|
|
231
235
|
text = text.replace(
|
|
232
236
|
"Read before starting:\n",
|
|
233
|
-
"Read before starting:\n\n-
|
|
237
|
+
"Read before starting:\n\n- `forge/USING_FORGE.md`\n",
|
|
234
238
|
1,
|
|
235
239
|
)
|
|
236
240
|
skill_path.write_text(text, encoding="utf-8")
|
|
@@ -253,30 +257,7 @@ def _create_surface_skill(surface_root: Path, forge_root: Path, skill_name: str)
|
|
|
253
257
|
target_skill.unlink()
|
|
254
258
|
else:
|
|
255
259
|
shutil.rmtree(target_skill)
|
|
256
|
-
target_skill.
|
|
257
|
-
|
|
258
|
-
for child in source_skill.iterdir():
|
|
259
|
-
if child.name == "SKILL.md":
|
|
260
|
-
continue
|
|
261
|
-
target_child = target_skill / child.name
|
|
262
|
-
if target_child.exists() or target_child.is_symlink():
|
|
263
|
-
if target_child.is_symlink() or target_child.is_file():
|
|
264
|
-
target_child.unlink()
|
|
265
|
-
else:
|
|
266
|
-
shutil.rmtree(target_child)
|
|
267
|
-
target_child.symlink_to(_relative_symlink_target(target_skill, child), target_is_directory=child.is_dir())
|
|
268
|
-
|
|
269
|
-
surfaced_skill = _surface_skill_text(source_skill / "SKILL.md")
|
|
270
|
-
(target_skill / "SKILL.md").write_text(surfaced_skill, encoding="utf-8")
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
def _surface_skill_text(skill_path: Path) -> str:
|
|
274
|
-
text = skill_path.read_text(encoding="utf-8")
|
|
275
|
-
return (
|
|
276
|
-
text.replace("../../SCHEMA_REFERENCE_V4.md", "../../../forge/SCHEMA_REFERENCE_V4.md")
|
|
277
|
-
.replace("../../FRAMEWORK_V4.md", "../../../forge/FRAMEWORK_V4.md")
|
|
278
|
-
.replace("../../USING_FORGE.md", "../../../forge/USING_FORGE.md")
|
|
279
|
-
)
|
|
260
|
+
target_skill.symlink_to(_relative_symlink_target(surface_root, source_skill), target_is_directory=True)
|
|
280
261
|
|
|
281
262
|
|
|
282
263
|
def _relative_symlink_target(link_parent: Path, destination: Path) -> Path:
|
|
@@ -117,20 +117,22 @@ def test_init_scaffolds_traversable_repo(tmp_path: Path, capsys) -> None:
|
|
|
117
117
|
assert "*.egg-info/" in (root / ".gitignore").read_text(encoding="utf-8")
|
|
118
118
|
codex_skill = root / ".codex" / "skills" / "forge-build"
|
|
119
119
|
assert codex_skill.is_dir()
|
|
120
|
-
assert
|
|
120
|
+
assert codex_skill.is_symlink()
|
|
121
|
+
assert codex_skill.resolve() == forge_root / "skills" / "forge-build"
|
|
121
122
|
assert (codex_skill / "SKILL.md").exists()
|
|
122
123
|
assert (codex_skill / "agents" / "openai.yaml").exists()
|
|
123
124
|
assert not (codex_skill / "coding_agent_skills_reference").exists()
|
|
124
125
|
surfaced_skill = (codex_skill / "SKILL.md").read_text(encoding="utf-8")
|
|
125
|
-
assert "
|
|
126
|
+
assert "forge/USING_FORGE.md" in surfaced_skill
|
|
126
127
|
assert "../forge-schema/SKILL.md" in surfaced_skill
|
|
127
|
-
assert (root / ".claude" / "skills" / "forge-business"
|
|
128
|
-
assert (root / ".claude" / "skills" / "forge-schema"
|
|
129
|
-
assert (root / ".claude" / "skills" / "forge-hydrate"
|
|
130
|
-
assert (root / ".agents" / "skills" / "forge-review"
|
|
128
|
+
assert (root / ".claude" / "skills" / "forge-business").is_symlink()
|
|
129
|
+
assert (root / ".claude" / "skills" / "forge-schema").is_symlink()
|
|
130
|
+
assert (root / ".claude" / "skills" / "forge-hydrate").is_symlink()
|
|
131
|
+
assert (root / ".agents" / "skills" / "forge-review").is_symlink()
|
|
132
|
+
assert (root / ".copilot" / "skills" / "forge-security").is_symlink()
|
|
131
133
|
rewritten_skill = (forge_root / "skills" / "forge-schema" / "SKILL.md").read_text(encoding="utf-8")
|
|
132
|
-
assert "
|
|
133
|
-
assert "
|
|
134
|
+
assert "forge/SCHEMA_REFERENCE_V4.md" in rewritten_skill
|
|
135
|
+
assert "forge/USING_FORGE.md" in rewritten_skill
|
|
134
136
|
usage_doc = (forge_root / "USING_FORGE.md").read_text(encoding="utf-8")
|
|
135
137
|
assert "Forge is **skills-first**." in usage_doc
|
|
136
138
|
assert "Use Forge In This Order" in usage_doc
|
|
@@ -436,8 +436,8 @@ def test_init_scaffolds_v4_project(tmp_path: Path, capsys) -> None:
|
|
|
436
436
|
assert (forge_root / "skills" / "forge-schema" / "SKILL.md").exists()
|
|
437
437
|
assert (forge_root / "skills" / "forge-hydrate" / "SKILL.md").exists()
|
|
438
438
|
skill_text = (forge_root / "skills" / "forge-schema" / "SKILL.md").read_text(encoding="utf-8")
|
|
439
|
-
assert "
|
|
440
|
-
assert "
|
|
439
|
+
assert "forge/FRAMEWORK_V4.md" in skill_text
|
|
440
|
+
assert "forge/SCHEMA_REFERENCE_V4.md" in skill_text
|
|
441
441
|
capsys.readouterr()
|
|
442
442
|
assert main(["crawl", "--project-dir", str(root)]) == 0
|
|
443
443
|
payload = json.loads(capsys.readouterr().out)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-build/agents/openai.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-business/agents/openai.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-hydrate/agents/openai.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-review/agents/openai.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-schema/agents/openai.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{ai_forge_cli-3.0.0 → ai_forge_cli-3.0.1}/src/cli/resources/skills/forge-security/agents/openai.yaml
RENAMED
|
File without changes
|
|
File without changes
|