@fernando.zavaleta/ai-platform-core 0.0.7-beta
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.
- package/02-mcp/02.1-jira/bridge-protocol.md +50 -0
- package/02-mcp/02.2-testrail/bridge.md +0 -0
- package/02-mcp/02.4-sdp/bridge-protocol.md +15 -0
- package/02-mcp/03.3-confluence/bridge-protocol.md +16 -0
- package/03-domains/03.1-qa/agent.md +68 -0
- package/03-domains/03.1-qa/knowledge/risk-analysis.md +163 -0
- package/03-domains/03.1-qa/profile.json +10 -0
- package/03-domains/03.1-qa/skills/analyze-ticket-risk.md +252 -0
- package/03-domains/03.1-qa/skills/generate-regression-suite.md +11 -0
- package/03-domains/03.1-qa/skills/generate-smoke-suite.md +11 -0
- package/03-domains/03.1-qa/skills/generate-test-cases.md +41 -0
- package/03-domains/03.1-qa/skills/generate-test-plan.md +25 -0
- package/03-domains/03.1-qa/skills/generate-test-scenarios.md +23 -0
- package/03-domains/03.1-qa/skills/normalize-ticket.md +83 -0
- package/03-domains/03.1-qa/skills/report-bug.md +41 -0
- package/03-domains/03.1-qa/templates/bug-report-template.md +62 -0
- package/03-domains/03.1-qa/templates/test-case-template.md +29 -0
- package/03-domains/03.1-qa/templates/test-plan-template.md +86 -0
- package/03-domains/03.3-l3/agent.md +80 -0
- package/03-domains/03.3-l3/skills/analyze-incident-rca.md +16 -0
- package/03-domains/03.3-l3/skills/correlate-rca.md +16 -0
- package/03-domains/03.3-l3/skills/generate-diagnosis.md +17 -0
- package/03-domains/03.3-l3/skills/normalize-incident.md +15 -0
- package/03-domains/03.3-l3/skills/search-rca-confluence.md +13 -0
- package/03-domains/03.3-l3/templates/rca-template.md +21 -0
- package/03-domains/03.4-product/agent.md +80 -0
- package/03-domains/03.4-product/knowledge/story-quality.md +16 -0
- package/03-domains/03.4-product/skills/validate-story.md +152 -0
- package/03-domains/03.4-product/templates/story-quality-template.md +67 -0
- package/README.md +52 -0
- package/bin/cli.js +45 -0
- package/bin/ia_install.py +38 -0
- package/package.json +18 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Skill: Validate Story
|
|
2
|
+
|
|
3
|
+
## Objective
|
|
4
|
+
|
|
5
|
+
Evaluate whether a Jira story is well defined and ready for development using standardized story quality principles.
|
|
6
|
+
|
|
7
|
+
All outputs must be generated in SPANISH.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Input
|
|
12
|
+
|
|
13
|
+
The Jira ticket must be retrieved via the MCP bridge:
|
|
14
|
+
|
|
15
|
+
02-mcp/02.1-jira/bridge.md
|
|
16
|
+
|
|
17
|
+
The response from Jira is a JSON object.
|
|
18
|
+
|
|
19
|
+
This JSON may be used by the agent for reasoning, but **must NOT be stored in the output directory**.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Output Policy
|
|
24
|
+
|
|
25
|
+
The output directory must only contain final documentation artifacts.
|
|
26
|
+
|
|
27
|
+
The agent MUST NOT store intermediate JSON files in:
|
|
28
|
+
|
|
29
|
+
05-output/
|
|
30
|
+
|
|
31
|
+
Only Markdown files are allowed as final artifacts.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
# Knowledge Source
|
|
36
|
+
|
|
37
|
+
Apply the story quality framework defined in:
|
|
38
|
+
|
|
39
|
+
03-domains/03.4-product/knowledge/story-quality.md
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
# Validation Dimensions
|
|
44
|
+
|
|
45
|
+
The story must be evaluated across the following dimensions.
|
|
46
|
+
|
|
47
|
+
## Problem Clarity
|
|
48
|
+
|
|
49
|
+
Determine if the story clearly explains the problem or functionality requested.
|
|
50
|
+
|
|
51
|
+
Indicators:
|
|
52
|
+
|
|
53
|
+
- Clear description
|
|
54
|
+
- Understandable goal
|
|
55
|
+
- Context provided
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Business Value
|
|
60
|
+
|
|
61
|
+
Evaluate whether the story explains the benefit for the user or the business.
|
|
62
|
+
|
|
63
|
+
Indicators:
|
|
64
|
+
|
|
65
|
+
- Business impact described
|
|
66
|
+
- User value identified
|
|
67
|
+
- Stakeholder relevance
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Acceptance Criteria
|
|
72
|
+
|
|
73
|
+
Verify that acceptance criteria exist.
|
|
74
|
+
|
|
75
|
+
Preferred format:
|
|
76
|
+
|
|
77
|
+
Given
|
|
78
|
+
When
|
|
79
|
+
Then
|
|
80
|
+
|
|
81
|
+
If acceptance criteria are missing, mark as FAIL.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Testability
|
|
86
|
+
|
|
87
|
+
Determine if QA can design test cases based on the ticket description.
|
|
88
|
+
|
|
89
|
+
Indicators:
|
|
90
|
+
|
|
91
|
+
- Measurable behavior
|
|
92
|
+
- Clear expected outcomes
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Dependencies
|
|
97
|
+
|
|
98
|
+
Evaluate whether the ticket identifies dependencies or related work.
|
|
99
|
+
|
|
100
|
+
Indicators:
|
|
101
|
+
|
|
102
|
+
- Linked tickets
|
|
103
|
+
- System dependencies
|
|
104
|
+
- Integration references
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
# Scoring
|
|
109
|
+
|
|
110
|
+
Each validation dimension must be classified as:
|
|
111
|
+
|
|
112
|
+
PASS
|
|
113
|
+
PARTIAL
|
|
114
|
+
FAIL
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
# Readiness Decision
|
|
119
|
+
|
|
120
|
+
READY
|
|
121
|
+
|
|
122
|
+
All validation dimensions PASS.
|
|
123
|
+
|
|
124
|
+
PARTIALLY READY
|
|
125
|
+
|
|
126
|
+
Some PARTIAL but no FAIL.
|
|
127
|
+
|
|
128
|
+
NOT READY
|
|
129
|
+
|
|
130
|
+
At least one FAIL.
|
|
131
|
+
|
|
132
|
+
Development must not start.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
# Output
|
|
137
|
+
|
|
138
|
+
Generate the validation report in:
|
|
139
|
+
|
|
140
|
+
05-output/agent-product/[JIRA_ID]/
|
|
141
|
+
|
|
142
|
+
File name:
|
|
143
|
+
|
|
144
|
+
[JIRA_ID].story-validation.md
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
# Output Format
|
|
149
|
+
|
|
150
|
+
Use the template defined in:
|
|
151
|
+
|
|
152
|
+
03-domains/03.4-product/templates/story-quality-template.md
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Story Validation Report
|
|
2
|
+
|
|
3
|
+
Ticket: [JIRA_ID]
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Problem Clarity
|
|
8
|
+
|
|
9
|
+
Status:
|
|
10
|
+
|
|
11
|
+
PASS / PARTIAL / FAIL
|
|
12
|
+
|
|
13
|
+
Analysis:
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Business Value
|
|
18
|
+
|
|
19
|
+
Status:
|
|
20
|
+
|
|
21
|
+
PASS / PARTIAL / FAIL
|
|
22
|
+
|
|
23
|
+
Analysis:
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Acceptance Criteria
|
|
28
|
+
|
|
29
|
+
Status:
|
|
30
|
+
|
|
31
|
+
PASS / PARTIAL / FAIL
|
|
32
|
+
|
|
33
|
+
Analysis:
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Testability
|
|
38
|
+
|
|
39
|
+
Status:
|
|
40
|
+
|
|
41
|
+
PASS / PARTIAL / FAIL
|
|
42
|
+
|
|
43
|
+
Analysis:
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Dependencies
|
|
48
|
+
|
|
49
|
+
Status:
|
|
50
|
+
|
|
51
|
+
PASS / PARTIAL / FAIL
|
|
52
|
+
|
|
53
|
+
Analysis:
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
# Final Decision
|
|
58
|
+
|
|
59
|
+
READY
|
|
60
|
+
PARTIALLY READY
|
|
61
|
+
NOT READY
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
# Recommendations
|
|
66
|
+
|
|
67
|
+
Suggestions to improve the story definition.
|
package/README.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# AI Platform Engineering
|
|
2
|
+
|
|
3
|
+
AI Platform Engineering is the core engineering framework used to design, build and operate enterprise AI platforms, copilots and intelligent services.
|
|
4
|
+
|
|
5
|
+
This repository defines the architecture, standards, engineering practices and reusable capabilities required to develop scalable AI-powered systems across the organization.
|
|
6
|
+
|
|
7
|
+
It serves as the foundation for:
|
|
8
|
+
|
|
9
|
+
- AI copilots for engineering, support and operations
|
|
10
|
+
- intelligent automation systems
|
|
11
|
+
- incident analysis and root cause analysis agents
|
|
12
|
+
- knowledge-driven AI assistants
|
|
13
|
+
- internal AI development standards
|
|
14
|
+
|
|
15
|
+
The goal of this platform is to provide a structured approach for building reliable, secure and production-ready AI systems.
|
|
16
|
+
|
|
17
|
+
## Scope
|
|
18
|
+
|
|
19
|
+
This repository includes:
|
|
20
|
+
|
|
21
|
+
- AI platform architecture
|
|
22
|
+
- engineering principles and standards
|
|
23
|
+
- reusable AI skills
|
|
24
|
+
- agent patterns
|
|
25
|
+
- prompt engineering guidelines
|
|
26
|
+
- context management strategies
|
|
27
|
+
- examples and reference implementations
|
|
28
|
+
|
|
29
|
+
## Target users
|
|
30
|
+
|
|
31
|
+
- AI engineers
|
|
32
|
+
- platform engineers
|
|
33
|
+
- backend engineers
|
|
34
|
+
- DevOps / SRE
|
|
35
|
+
- internal AI product teams
|
|
36
|
+
|
|
37
|
+
# AI Platform Engineering - Installation
|
|
38
|
+
|
|
39
|
+
Para activar la inteligencia en tu editor **Cursor**, sigue estos pasos:
|
|
40
|
+
|
|
41
|
+
### 1. Requisitos
|
|
42
|
+
- Node.js instalado.
|
|
43
|
+
- Abrir este proyecto en **Visual Studio Code** (Desarrollo) o **Cursor** (Uso).
|
|
44
|
+
|
|
45
|
+
### 2. Instalación por Perfil
|
|
46
|
+
Si eres un QA Engineer, ejecuta:
|
|
47
|
+
```bash
|
|
48
|
+
npm run install:qa
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
### Deploy TAG
|
|
52
|
+
ai-platform-engineering@v0.0.1
|
package/bin/cli.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const fs = require('fs');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
|
|
5
|
+
const profileKey = process.argv[2];
|
|
6
|
+
const PACKAGE_ROOT = path.join(__dirname, '..');
|
|
7
|
+
const TARGET_DIR = path.join(process.cwd(), '.cursor', 'skills');
|
|
8
|
+
|
|
9
|
+
const profiles = {
|
|
10
|
+
"qa": "03.1-qa",
|
|
11
|
+
"l3": "03.3-l3",
|
|
12
|
+
"product": "03.4-product"
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const domainFolder = profiles[profileKey];
|
|
16
|
+
if (!domainFolder) {
|
|
17
|
+
console.error("❌ Perfil no válido. Usa: qa, l3 o product");
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const domainPath = path.join(PACKAGE_ROOT, '03-domains', domainFolder);
|
|
22
|
+
const config = JSON.parse(fs.readFileSync(path.join(domainPath, 'profile.json'), 'utf8'));
|
|
23
|
+
|
|
24
|
+
if (!fs.existsSync(TARGET_DIR)) fs.mkdirSync(TARGET_DIR, { recursive: true });
|
|
25
|
+
|
|
26
|
+
console.log(`🚀 Instalando inteligencia para ${profileKey}...`);
|
|
27
|
+
|
|
28
|
+
// Escaneo automático de carpetas
|
|
29
|
+
config.include_dirs.forEach(dirName => {
|
|
30
|
+
const sourceDir = path.join(domainPath, dirName);
|
|
31
|
+
|
|
32
|
+
if (fs.existsSync(sourceDir)) {
|
|
33
|
+
const files = fs.readdirSync(sourceDir);
|
|
34
|
+
files.forEach(file => {
|
|
35
|
+
// Solo copiamos archivos (evitamos subcarpetas por ahora)
|
|
36
|
+
const srcFile = path.join(sourceDir, file);
|
|
37
|
+
if (fs.lstatSync(srcFile).isFile()) {
|
|
38
|
+
fs.copyFileSync(srcFile, path.join(TARGET_DIR, file));
|
|
39
|
+
console.log(` ✅ [${dirName}] ${file} proyectado.`);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
console.log(`\n✨ Perfil ${profileKey} actualizado correctamente.`);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import os, sys, shutil, json
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
|
|
4
|
+
def install_profile(profile_key):
|
|
5
|
+
package_root = Path(__file__).parent.parent
|
|
6
|
+
target_dir = Path(os.getcwd()) / ".cursor" / "skills"
|
|
7
|
+
|
|
8
|
+
profiles = {"qa": "03.1-qa", "l3": "03.3-l3", "product": "03.4-product"}
|
|
9
|
+
domain_folder = profiles.get(profile_key)
|
|
10
|
+
|
|
11
|
+
if not domain_folder:
|
|
12
|
+
print(f"❌ Perfil {profile_key} no válido")
|
|
13
|
+
return
|
|
14
|
+
|
|
15
|
+
domain_path = package_root / "03-domains" / domain_folder
|
|
16
|
+
profile_json = domain_path / "profile.json"
|
|
17
|
+
|
|
18
|
+
with open(profile_json) as f:
|
|
19
|
+
config = json.load(f)
|
|
20
|
+
|
|
21
|
+
target_dir.mkdir(parents=True, exist_ok=True)
|
|
22
|
+
|
|
23
|
+
print(f"🚀 Sincronizando carpetas para {profile_key}...")
|
|
24
|
+
|
|
25
|
+
# Escaneo automático de archivos en las carpetas configuradas
|
|
26
|
+
for dir_name in config.get("include_dirs", []):
|
|
27
|
+
source_dir = domain_path / dir_name
|
|
28
|
+
if source_dir.exists():
|
|
29
|
+
for item in source_dir.iterdir():
|
|
30
|
+
if item.is_file():
|
|
31
|
+
shutil.copy2(item, target_dir / item.name)
|
|
32
|
+
print(f" ✅ [{dir_name}] {item.name} copiado.")
|
|
33
|
+
|
|
34
|
+
print(f"\n✨ ¡Instalación modular completa!")
|
|
35
|
+
|
|
36
|
+
def main():
|
|
37
|
+
if len(sys.argv) > 1:
|
|
38
|
+
install_profile(sys.argv[1])
|
package/package.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@fernando.zavaleta/ai-platform-core",
|
|
3
|
+
"version": "0.0.7-beta",
|
|
4
|
+
"description": "Enterprise AI Framework Distribution Tool",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"ia-install": "./bin/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"03-domains",
|
|
11
|
+
"02-mcp",
|
|
12
|
+
"00-config/global-base.md",
|
|
13
|
+
"bin"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
17
|
+
}
|
|
18
|
+
}
|