ai-forge-cli 3.0.1__tar.gz → 3.0.2__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.1/src/ai_forge_cli.egg-info → ai_forge_cli-3.0.2}/PKG-INFO +1 -1
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/pyproject.toml +1 -1
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2/src/ai_forge_cli.egg-info}/PKG-INFO +1 -1
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/commands/init.py +53 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/tests/test_context.py +4 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/MANIFEST.in +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/README.md +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/setup.cfg +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/setup.py +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/ai_forge_cli.egg-info/SOURCES.txt +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/ai_forge_cli.egg-info/dependency_links.txt +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/ai_forge_cli.egg-info/entry_points.txt +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/ai_forge_cli.egg-info/requires.txt +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/ai_forge_cli.egg-info/top_level.txt +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/__init__.py +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/__main__.py +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/assets/audit_template.html +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/assets/forge_full_logo.drawio.svg +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/assets/forge_white_small.drawio.svg +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/commands/__init__.py +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/commands/audit.py +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/commands/base.py +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/commands/context.py +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/commands/crawl.py +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/common.py +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/crawler.py +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/forge.py +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/FRAMEWORK_V4.md +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/SCHEMA_REFERENCE_V4.md +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-build/SKILL.md +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-build/agents/openai.yaml +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-business/SKILL.md +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-business/agents/openai.yaml +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-hydrate/SKILL.md +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-hydrate/agents/openai.yaml +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-review/SKILL.md +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-review/agents/openai.yaml +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-schema/SKILL.md +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-schema/agents/openai.yaml +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-security/SKILL.md +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-security/agents/openai.yaml +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/yaml_io.py +0 -0
- {ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/tests/test_crawler.py +0 -0
|
@@ -164,6 +164,7 @@ def _scaffold_repository(target_root: Path, system_name: str, system_id: str) ->
|
|
|
164
164
|
_copy_skills(forge_root)
|
|
165
165
|
_rewrite_skill_references(forge_root)
|
|
166
166
|
_create_surface_skills(target_root, forge_root)
|
|
167
|
+
_create_github_copilot_context(target_root)
|
|
167
168
|
|
|
168
169
|
|
|
169
170
|
def _copy_docs(forge_root: Path) -> None:
|
|
@@ -260,6 +261,30 @@ def _create_surface_skill(surface_root: Path, forge_root: Path, skill_name: str)
|
|
|
260
261
|
target_skill.symlink_to(_relative_symlink_target(surface_root, source_skill), target_is_directory=True)
|
|
261
262
|
|
|
262
263
|
|
|
264
|
+
def _create_github_copilot_context(target_root: Path) -> None:
|
|
265
|
+
github_root = target_root / ".github"
|
|
266
|
+
instructions_root = github_root / "instructions"
|
|
267
|
+
prompts_root = github_root / "prompts"
|
|
268
|
+
instructions_root.mkdir(parents=True, exist_ok=True)
|
|
269
|
+
prompts_root.mkdir(parents=True, exist_ok=True)
|
|
270
|
+
_write_text(github_root / "copilot-instructions.md", _copilot_instructions_doc())
|
|
271
|
+
_write_text(instructions_root / "forge.instructions.md", _copilot_path_instructions_doc())
|
|
272
|
+
for skill_name in SKILL_DIRS:
|
|
273
|
+
_create_symlink(
|
|
274
|
+
prompts_root / f"{skill_name}.prompt.md",
|
|
275
|
+
target_root / "forge" / "skills" / skill_name / "SKILL.md",
|
|
276
|
+
)
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
def _create_symlink(link_path: Path, destination: Path) -> None:
|
|
280
|
+
if link_path.exists() or link_path.is_symlink():
|
|
281
|
+
if link_path.is_symlink() or link_path.is_file():
|
|
282
|
+
link_path.unlink()
|
|
283
|
+
else:
|
|
284
|
+
shutil.rmtree(link_path)
|
|
285
|
+
link_path.symlink_to(_relative_symlink_target(link_path.parent, destination), target_is_directory=destination.is_dir())
|
|
286
|
+
|
|
287
|
+
|
|
263
288
|
def _relative_symlink_target(link_parent: Path, destination: Path) -> Path:
|
|
264
289
|
return Path(os.path.relpath(destination, start=link_parent))
|
|
265
290
|
|
|
@@ -290,6 +315,34 @@ def _scaffold_gitignore() -> str:
|
|
|
290
315
|
)
|
|
291
316
|
|
|
292
317
|
|
|
318
|
+
def _copilot_instructions_doc() -> str:
|
|
319
|
+
return """# Forge Instructions
|
|
320
|
+
|
|
321
|
+
This repository uses Forge V4. Start with `forge/USING_FORGE.md`, then use the
|
|
322
|
+
skills in `forge/skills` in this order:
|
|
323
|
+
|
|
324
|
+
1. `forge-business`
|
|
325
|
+
2. `forge-schema`
|
|
326
|
+
3. `forge-review`
|
|
327
|
+
4. `forge-security`
|
|
328
|
+
5. `forge-build`
|
|
329
|
+
|
|
330
|
+
Treat `forge/skills` as the canonical skill source. Agent-specific skill
|
|
331
|
+
surfaces are symlinked back to that directory.
|
|
332
|
+
"""
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
def _copilot_path_instructions_doc() -> str:
|
|
336
|
+
return """---
|
|
337
|
+
applyTo: "**"
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
Use the Forge V4 workflow for repository work. Read `forge/USING_FORGE.md`
|
|
341
|
+
before implementation, and prefer the relevant skill in `forge/skills` for the
|
|
342
|
+
current task.
|
|
343
|
+
"""
|
|
344
|
+
|
|
345
|
+
|
|
293
346
|
def _print_init_summary(target_root: Path, system_name: str, system_id: str) -> None:
|
|
294
347
|
forge_root = target_root / "forge"
|
|
295
348
|
print(_banner("FORGE INITIALIZED"))
|
|
@@ -130,6 +130,10 @@ def test_init_scaffolds_traversable_repo(tmp_path: Path, capsys) -> None:
|
|
|
130
130
|
assert (root / ".claude" / "skills" / "forge-hydrate").is_symlink()
|
|
131
131
|
assert (root / ".agents" / "skills" / "forge-review").is_symlink()
|
|
132
132
|
assert (root / ".copilot" / "skills" / "forge-security").is_symlink()
|
|
133
|
+
assert (root / ".github" / "copilot-instructions.md").exists()
|
|
134
|
+
assert (root / ".github" / "instructions" / "forge.instructions.md").exists()
|
|
135
|
+
assert (root / ".github" / "prompts" / "forge-build.prompt.md").is_symlink()
|
|
136
|
+
assert (root / ".github" / "prompts" / "forge-build.prompt.md").resolve() == forge_root / "skills" / "forge-build" / "SKILL.md"
|
|
133
137
|
rewritten_skill = (forge_root / "skills" / "forge-schema" / "SKILL.md").read_text(encoding="utf-8")
|
|
134
138
|
assert "forge/SCHEMA_REFERENCE_V4.md" in rewritten_skill
|
|
135
139
|
assert "forge/USING_FORGE.md" in rewritten_skill
|
|
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.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-build/agents/openai.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-business/agents/openai.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-hydrate/agents/openai.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-review/agents/openai.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-schema/agents/openai.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{ai_forge_cli-3.0.1 → ai_forge_cli-3.0.2}/src/cli/resources/skills/forge-security/agents/openai.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|