mirror of
https://github.com/bmadcode/BMAD-METHOD.git
synced 2025-12-29 16:14:59 +00:00
feat: add custom agents and quick-flow workflows, remove tech-spec track
Major Changes: - Add sample custom agents demonstrating installable agent system - commit-poet: Generates semantic commit messages (BMAD Method repo sample) - toolsmith: Development tooling expert with knowledge base covering bundlers, deployment, docs, installers, modules, and tests (BMAD Method repo sample) - Both agents demonstrate custom agent architecture and are installable to projects via BMAD installer system - Include comprehensive installation guides and sidecar knowledge bases - Add bmad-quick-flow methodology for rapid development - create-tech-spec: Direct technical specification workflow - quick-dev: Flexible execution workflow supporting both tech-spec-driven and direct instruction development - quick-flow-solo-dev (Barry): 1 man show agent specialized in bmad-quick-flow methodology - Comprehensive documentation for quick-flow approach and solo development - Remove deprecated tech-spec workflow track - Delete entire tech-spec workflow directory and templates - Remove quick-spec-flow.md documentation (replaced by quick-flow docs) - Clean up unused epic and story templates - Fix custom agent installation across IDE installers - Repair antigravity and multiple IDE installers to properly support custom agents - Enable custom agent installation via quick installer, agent installer, regular installer, and special agent installer - All installation methods now accessible via npx with full documentation Infrastructure: - Update BMM module configurations and team setups - Modify workflow status paths to support quick-flow integration - Reorganize documentation with new agent and workflow guides - Add custom/ directory for user customizations - Update platform codes and installer configurations
This commit is contained in:
@@ -1629,14 +1629,9 @@ class Installer {
|
||||
spinner.succeed('No custom agents found to rebuild');
|
||||
}
|
||||
|
||||
// Regenerate manifests after compilation (including custom agents)
|
||||
spinner.start('Regenerating manifests...');
|
||||
const installedModules = entries
|
||||
.filter((e) => e.isDirectory() && e.name !== '_cfg' && e.name !== 'docs' && e.name !== 'agents' && e.name !== 'core')
|
||||
.map((e) => e.name);
|
||||
const manifestGen = new ManifestGenerator();
|
||||
|
||||
// Get existing IDE list from manifest
|
||||
// Skip full manifest regeneration during compileAgents to preserve custom agents
|
||||
// Custom agents are already added to manifests during individual installation
|
||||
// Only regenerate YAML manifest for IDE updates if needed
|
||||
const existingManifestPath = path.join(bmadDir, '_cfg', 'manifest.yaml');
|
||||
let existingIdes = [];
|
||||
if (await fs.pathExists(existingManifestPath)) {
|
||||
@@ -1646,11 +1641,6 @@ class Installer {
|
||||
existingIdes = manifest.ides || [];
|
||||
}
|
||||
|
||||
await manifestGen.generateManifests(bmadDir, installedModules, [], {
|
||||
ides: existingIdes,
|
||||
});
|
||||
spinner.succeed('Manifests regenerated');
|
||||
|
||||
// Update IDE configurations using the existing IDE list from manifest
|
||||
if (existingIdes && existingIdes.length > 0) {
|
||||
spinner.start('Updating IDE configurations...');
|
||||
@@ -2369,8 +2359,16 @@ class Installer {
|
||||
|
||||
// Update manifest CSV
|
||||
if (await fs.pathExists(manifestFile)) {
|
||||
const manifestData = extractManifestData(xml, { ...metadata, name: finalAgentName }, relativePath, 'custom');
|
||||
manifestData.name = finalAgentName;
|
||||
// Preserve YAML metadata for persona name, but override id for filename
|
||||
const manifestMetadata = {
|
||||
...metadata,
|
||||
id: relativePath, // Use the compiled agent path for id
|
||||
name: metadata.name || finalAgentName, // Use YAML metadata.name (persona name) or fallback
|
||||
title: metadata.title, // Use YAML title
|
||||
icon: metadata.icon, // Use YAML icon
|
||||
};
|
||||
const manifestData = extractManifestData(xml, manifestMetadata, relativePath, 'custom');
|
||||
manifestData.name = finalAgentName; // Use filename for the name field
|
||||
manifestData.path = relativePath;
|
||||
addToManifest(manifestFile, manifestData);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user