autonomousguy 0.6.4
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/LICENSE +21 -0
- package/README.md +96 -0
- package/bin/validate.js +119 -0
- package/package.json +54 -0
- package/skills/autosar/autosar-bsw/SKILL.md +586 -0
- package/skills/autosar/autosar-bsw/references/adaptive-ap.md +104 -0
- package/skills/autosar/autosar-bsw/references/boot-nvm-power.md +127 -0
- package/skills/autosar/autosar-bsw/references/com-stack.md +118 -0
- package/skills/autosar/autosar-bsw/references/comms-protocol.md +130 -0
- package/skills/autosar/autosar-swc/SKILL.md +531 -0
- package/skills/autosar/autosar-swc/references/adaptive-ap.md +69 -0
- package/skills/autosar/autosar-swc/references/rte-api.md +149 -0
- package/skills/change-management/change-and-impact/SKILL.md +259 -0
- package/skills/change-management/change-and-impact/references/html-report-template.html +154 -0
- package/skills/code-quality/code-review/SKILL.md +287 -0
- package/skills/code-quality/code-review/references/adaptive-ap.md +30 -0
- package/skills/code-quality/code-review/references/html-report-template.html +154 -0
- package/skills/code-quality/misra/SKILL.md +306 -0
- package/skills/code-quality/misra/references/html-report-template.html +154 -0
- package/skills/code-quality/misra/references/rules.md +72 -0
- package/skills/debugging/embedded-debugging/SKILL.md +250 -0
- package/skills/debugging/embedded-debugging/references/adaptive-ap.md +33 -0
- package/skills/debugging/embedded-debugging/references/html-report-template.html +154 -0
- package/skills/requirements/requirements/SKILL.md +298 -0
- package/skills/safety/iso26262/SKILL.md +199 -0
- package/skills/safety/iso26262/references/asil-table.md +86 -0
- package/skills/testing/embedded-testing/SKILL.md +288 -0
- package/skills/workspace/codebase-analysis/SKILL.md +548 -0
- package/skills/workspace/codebase-analysis/references/adaptive-ap.md +77 -0
- package/skills/workspace/codebase-analysis/references/html-report-template.html +154 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Panagiotis Tsilivis
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# autonomousguy
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/autonomousguy)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
[](https://nodejs.org)
|
|
6
|
+
|
|
7
|
+
Open-source AI agent skills for embedded automotive engineers - AUTOSAR, MISRA C, ISO 26262 - that give Copilot and Claude the domain context they are missing.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```shell
|
|
12
|
+
# Install all skills (global)
|
|
13
|
+
npx skills add ptsilivis/autonomousguy -g
|
|
14
|
+
|
|
15
|
+
# Browse what's inside before installing
|
|
16
|
+
npx skills add ptsilivis/autonomousguy --list
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
That is all you need. Works with Claude Code, GitHub Copilot, Cursor, Codex, Gemini CLI, and any tool that supports Agent Skills.
|
|
20
|
+
|
|
21
|
+
## What's inside
|
|
22
|
+
|
|
23
|
+
10 mode-aware skills covering the ECU software lifecycle. Each skill routes from your input to the right sub-workflow, so one skill handles several related tasks. Start with `codebase-analysis` on a new project: it writes `.autonomousguy/CODEBASE_MAP.md`, which the other skills reference.
|
|
24
|
+
|
|
25
|
+
The AUTOSAR column states which platform a skill assumes. Skills marked "Classic + Adaptive" default to Classic AUTOSAR (CP) and switch to Adaptive AUTOSAR (AP) when your input names AP concepts (ara::com, ara::exec, C++14, POSIX, service-oriented, manifest).
|
|
26
|
+
|
|
27
|
+
| Skill | What it does | Platform |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| `codebase-analysis` | Scans the repo and maps SWCs, BSW usage, port interfaces, RTE API calls, signal flow, and ASIL zones into `CODEBASE_MAP.md`. | Classic + Adaptive |
|
|
30
|
+
| `autosar-swc` | Component design, port interface definition, SWC code, plain-text diagrams, and integration review. | Classic + Adaptive |
|
|
31
|
+
| `autosar-bsw` | BSW config (Com, NvM, Dem, Dcm, Os, MemIf), ARXML debugging, RTE generation troubleshooting, and CAN COM-stack debugging (CanIf -> PduR -> Com). | Classic + Adaptive |
|
|
32
|
+
| `misra` | Audit C against MISRA C:2025 or write code that is compliant by construction. | Classic (MISRA C) |
|
|
33
|
+
| `code-review` | Embedded C correctness review (ISR safety, integer overflow, races, stack) plus AUTOSAR naming-convention audit. | Classic + Adaptive |
|
|
34
|
+
| `requirements` | Elicit, refine, and trace requirements in EARS notation with ASIL attributes. | Neutral |
|
|
35
|
+
| `iso26262` | Run a HARA to assign ASIL, or derive Safety Goals and Functional Safety Requirements with FTTI. | Neutral |
|
|
36
|
+
| `embedded-testing` | Generate MC/DC-covering unit tests and systematic boundary-value test points. | Classic + Adaptive |
|
|
37
|
+
| `embedded-debugging` | Triage a field problem report or debug a specific fault (HardFault, watchdog, Dem event, stack overflow). | Classic + Adaptive |
|
|
38
|
+
| `change-and-impact` | Analyze a change request before work begins, or trace direct and indirect ripple effects with a regression scope. | Classic + Adaptive |
|
|
39
|
+
|
|
40
|
+
Domain coverage: AUTOSAR Classic (CP) and Adaptive (AP), BSW, MCAL, RTE, AUTOSAR OS, ara::com, ara::exec, SOA, MISRA C, ISO 26262, ASIL, functional safety, ECU, CAN.
|
|
41
|
+
|
|
42
|
+
## Why it exists
|
|
43
|
+
|
|
44
|
+
Embedded automotive work carries a lot of domain context - AUTOSAR layering, MISRA C rules, ISO 26262 ASIL logic - that general AI tools do not know. Without it you re-explain the same background on every prompt. These skills encode that context once so the AI gives consistent, expert-level answers without the re-explaining.
|
|
45
|
+
|
|
46
|
+
## Usage
|
|
47
|
+
|
|
48
|
+
The two commands above cover most needs. For finer control:
|
|
49
|
+
|
|
50
|
+
```shell
|
|
51
|
+
# Install one skill (use the name shown by --list)
|
|
52
|
+
npx skills add ptsilivis/autonomousguy --skill autosar-bsw
|
|
53
|
+
|
|
54
|
+
# Target a specific agent
|
|
55
|
+
npx skills add ptsilivis/autonomousguy -a claude-code
|
|
56
|
+
npx skills add ptsilivis/autonomousguy -a copilot
|
|
57
|
+
|
|
58
|
+
# Non-interactive (CI)
|
|
59
|
+
npx skills add ptsilivis/autonomousguy -y
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
After install, each skill lands in your agent's native location (e.g. `.claude/skills/<name>/SKILL.md`). Invoke it the way you invoke any Agent Skill.
|
|
63
|
+
|
|
64
|
+
## Supported agents
|
|
65
|
+
|
|
66
|
+
Claude Code, GitHub Copilot, Cursor, Codex, Gemini CLI, opencode, and any tool that supports the Agent Skills convention. Path resolution is handled by the `skills` CLI per agent. Pass `-a <agent>` to target one explicitly; without it the CLI detects installed agents.
|
|
67
|
+
|
|
68
|
+
## Requirements
|
|
69
|
+
|
|
70
|
+
- Node.js >=18 (for `npx`).
|
|
71
|
+
- An AI tool that supports Agent Skills.
|
|
72
|
+
|
|
73
|
+
## Contributing
|
|
74
|
+
|
|
75
|
+
This is early. Feedback on gaps - missing skills, weak guidance, wrong domain detail - is wanted. Open an issue: https://github.com/ptsilivis/autonomousguy/issues
|
|
76
|
+
|
|
77
|
+
To work on the repo:
|
|
78
|
+
|
|
79
|
+
```shell
|
|
80
|
+
git clone https://github.com/ptsilivis/autonomousguy.git
|
|
81
|
+
cd autonomousguy
|
|
82
|
+
node bin/validate.js # validate skill structure
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Standards and licensing notice
|
|
86
|
+
|
|
87
|
+
The skills reference two copyrighted standards:
|
|
88
|
+
|
|
89
|
+
- MISRA C:2025 - (c) The MISRA Consortium Ltd. Sold per-seat; not redistributable.
|
|
90
|
+
- ISO 26262:2018 (all parts) - (c) ISO. Sold per-part; not redistributable.
|
|
91
|
+
|
|
92
|
+
This library cites rule and clause identifiers (e.g. "MISRA C:2025 Rule 11.3", "ISO 26262-3:2018 Table 4") and paraphrases their intent in its own words. It does not reproduce normative text, rationale, amplification, examples, or full lookup tables. To apply these skills on a real project you must hold a properly licensed copy of each standard. If you spot content that reproduces normative text rather than paraphrasing it, open an issue and it will be rewritten.
|
|
93
|
+
|
|
94
|
+
## License
|
|
95
|
+
|
|
96
|
+
MIT (c) [Panagiotis Tsilivis](https://github.com/ptsilivis)
|
package/bin/validate.js
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
const fs = require('fs');
|
|
5
|
+
const path = require('path');
|
|
6
|
+
const glob = require('fs').readdirSync;
|
|
7
|
+
|
|
8
|
+
const REQUIRED_FM_KEYS = ['name', 'short', 'description', 'category', 'tags'];
|
|
9
|
+
const REQUIRED_SECTIONS = [
|
|
10
|
+
'## Context',
|
|
11
|
+
'## Instructions',
|
|
12
|
+
'## Input expected',
|
|
13
|
+
'## Output format',
|
|
14
|
+
'## Example',
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
function validateFile(filePath) {
|
|
18
|
+
const content = fs.readFileSync(filePath, 'utf8');
|
|
19
|
+
const errors = [];
|
|
20
|
+
|
|
21
|
+
// Check frontmatter
|
|
22
|
+
const fmMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
|
23
|
+
if (!fmMatch) {
|
|
24
|
+
errors.push('missing YAML frontmatter');
|
|
25
|
+
} else {
|
|
26
|
+
const fm = fmMatch[1];
|
|
27
|
+
for (const key of REQUIRED_FM_KEYS) {
|
|
28
|
+
if (!new RegExp(`^${key}\\s*:`, 'm').test(fm)) {
|
|
29
|
+
errors.push(`frontmatter missing key: ${key}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Agent Skills spec: name is lowercase alnum + hyphens, <=64 chars, and
|
|
33
|
+
// matches the skill directory name; description is <=1024 chars.
|
|
34
|
+
const dirName = path.basename(path.dirname(filePath));
|
|
35
|
+
const nameMatch = fm.match(/^name\s*:\s*(.*)$/m);
|
|
36
|
+
if (nameMatch) {
|
|
37
|
+
const name = nameMatch[1].trim().replace(/^["']|["']$/g, '');
|
|
38
|
+
if (!/^[a-z0-9-]{1,64}$/.test(name)) {
|
|
39
|
+
errors.push(`frontmatter "name" must be lowercase [a-z0-9-], <=64 chars (got "${name}")`);
|
|
40
|
+
}
|
|
41
|
+
if (name !== dirName) {
|
|
42
|
+
errors.push(`frontmatter "name" ("${name}") must match skill directory name ("${dirName}")`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const descMatch = fm.match(/^description\s*:\s*(.*)$/m);
|
|
46
|
+
if (descMatch) {
|
|
47
|
+
const desc = descMatch[1].trim().replace(/^["']|["']$/g, '');
|
|
48
|
+
if (desc.length > 1024) {
|
|
49
|
+
errors.push(`frontmatter "description" is ${desc.length} chars (spec max 1024)`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Catch unquoted ": " in scalar values — silently breaks YAML parsers used
|
|
53
|
+
// by the upstream `skills` CLI. Quote with double-quotes to fix.
|
|
54
|
+
for (const key of ['name', 'short', 'description']) {
|
|
55
|
+
const m = fm.match(new RegExp(`^${key}\\s*:\\s*(.*)$`, 'm'));
|
|
56
|
+
if (!m) continue;
|
|
57
|
+
const val = m[1].trim();
|
|
58
|
+
const quoted = (val.startsWith('"') && val.endsWith('"')) ||
|
|
59
|
+
(val.startsWith("'") && val.endsWith("'"));
|
|
60
|
+
if (!quoted && /: /.test(val)) {
|
|
61
|
+
errors.push(`frontmatter "${key}" contains unquoted ": " — wrap value in double quotes`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Check sections in order
|
|
67
|
+
let searchFrom = 0;
|
|
68
|
+
for (const section of REQUIRED_SECTIONS) {
|
|
69
|
+
const idx = content.indexOf(section, searchFrom);
|
|
70
|
+
if (idx === -1) {
|
|
71
|
+
errors.push(`missing section: ${section}`);
|
|
72
|
+
} else {
|
|
73
|
+
searchFrom = idx + section.length;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Every references/<file> cited in the body must exist next to the skill
|
|
78
|
+
const skillDir = path.dirname(filePath);
|
|
79
|
+
const cited = new Set(content.match(/references\/[\w.-]+\.\w+/g) || []);
|
|
80
|
+
for (const rel of cited) {
|
|
81
|
+
if (!fs.existsSync(path.join(skillDir, rel))) {
|
|
82
|
+
errors.push(`cited file does not exist: ${rel}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return errors;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function findSkillFiles(dir) {
|
|
90
|
+
const results = [];
|
|
91
|
+
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
92
|
+
const full = path.join(dir, entry.name);
|
|
93
|
+
if (entry.isDirectory()) results.push(...findSkillFiles(full));
|
|
94
|
+
else if (entry.name === 'SKILL.md') results.push(full);
|
|
95
|
+
}
|
|
96
|
+
return results;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const skillsDir = path.join(__dirname, '..', 'skills');
|
|
100
|
+
const files = findSkillFiles(skillsDir);
|
|
101
|
+
let failed = 0;
|
|
102
|
+
|
|
103
|
+
for (const file of files) {
|
|
104
|
+
const errors = validateFile(file);
|
|
105
|
+
if (errors.length > 0) {
|
|
106
|
+
const rel = path.relative(process.cwd(), file);
|
|
107
|
+
for (const err of errors) {
|
|
108
|
+
console.error(`FAIL ${rel}: ${err}`);
|
|
109
|
+
}
|
|
110
|
+
failed++;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (failed > 0) {
|
|
115
|
+
console.error(`\n${failed} skill file(s) failed validation.`);
|
|
116
|
+
process.exit(1);
|
|
117
|
+
} else {
|
|
118
|
+
console.log(`OK ${files.length} skill files validated.`);
|
|
119
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "autonomousguy",
|
|
3
|
+
"version": "0.6.4",
|
|
4
|
+
"description": "AI skill prompts for embedded automotive engineers - Classic and Adaptive AUTOSAR, MISRA C, ISO 26262, ECU development. Install via `npx skills add ptsilivis/autonomousguy`.",
|
|
5
|
+
"files": [
|
|
6
|
+
"bin/validate.js",
|
|
7
|
+
"skills/"
|
|
8
|
+
],
|
|
9
|
+
"homepage": "https://github.com/ptsilivis/autonomousguy#readme",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://github.com/ptsilivis/autonomousguy.git"
|
|
13
|
+
},
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/ptsilivis/autonomousguy/issues"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"autonomousguy",
|
|
19
|
+
"autosar",
|
|
20
|
+
"classic-autosar",
|
|
21
|
+
"adaptive-autosar",
|
|
22
|
+
"misra",
|
|
23
|
+
"misra-c",
|
|
24
|
+
"mcal",
|
|
25
|
+
"bsw",
|
|
26
|
+
"ara-com",
|
|
27
|
+
"embedded",
|
|
28
|
+
"embedded-automotive",
|
|
29
|
+
"embedded-systems",
|
|
30
|
+
"automotive",
|
|
31
|
+
"ai",
|
|
32
|
+
"ai-skills",
|
|
33
|
+
"agent-skills",
|
|
34
|
+
"skills",
|
|
35
|
+
"llm-prompts",
|
|
36
|
+
"iso26262",
|
|
37
|
+
"safety",
|
|
38
|
+
"ecu",
|
|
39
|
+
"automotive-engineering",
|
|
40
|
+
"claude-code",
|
|
41
|
+
"github-copilot",
|
|
42
|
+
"cursor",
|
|
43
|
+
"gemini-cli",
|
|
44
|
+
"arxml",
|
|
45
|
+
"functional-safety"
|
|
46
|
+
],
|
|
47
|
+
"scripts": {
|
|
48
|
+
"validate": "node bin/validate.js"
|
|
49
|
+
},
|
|
50
|
+
"license": "MIT",
|
|
51
|
+
"engines": {
|
|
52
|
+
"node": ">=18"
|
|
53
|
+
}
|
|
54
|
+
}
|