@javierfrancoleal/forensics 0.0.0-stage → 1.0.1
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 +24 -2
- package/assets/forensics.md +59 -0
- package/cordis.patch.yml +4 -0
- package/icon.svg +7 -0
- package/lib/index.js +56 -0
- package/locale/ar.json +6 -0
- package/locale/de.json +6 -0
- package/locale/en.json +6 -0
- package/locale/es.json +6 -0
- package/locale/fr.json +6 -0
- package/locale/it.json +6 -0
- package/locale/ja.json +6 -0
- package/locale/ko.json +6 -0
- package/locale/pt.json +6 -0
- package/locale/zh.json +6 -0
- package/package.json +53 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 J.Franco
|
|
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
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
description: "The code-forensics organ: trace a feature end to end, read the fossil record, and produce a plain-language dossier."
|
|
3
|
+
kind: "package-bundle"
|
|
4
|
+
---
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
# @javierfrancoleal/forensics
|
|
7
|
+
|
|
8
|
+
Created by **J.Franco**.
|
|
9
|
+
|
|
10
|
+
## Summary
|
|
11
|
+
|
|
12
|
+
AI writes the code; the human reconstructs it. The forensics organ is the
|
|
13
|
+
archaeological protocol: identify the layers, trace ONE feature end to
|
|
14
|
+
end, read the fossil record (commits, LEARNINGS, triage, audit), and
|
|
15
|
+
produce a plain-language dossier that lets a non-programmer give correct
|
|
16
|
+
orders.
|
|
17
|
+
|
|
18
|
+
## Use this plugin
|
|
19
|
+
|
|
20
|
+
Ask "forensics" or use `/forensics <feature>` (e.g. `/forensics the
|
|
21
|
+
virtual register`).
|
|
22
|
+
|
|
23
|
+
## License
|
|
24
|
+
|
|
25
|
+
MIT — see the package license field.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Forensics — the code archaeologist
|
|
2
|
+
|
|
3
|
+
The future of programming: the AI writes the code; the human — with the
|
|
4
|
+
AI's help — reconstructs HOW and WHY it was written. This organ is the
|
|
5
|
+
dig protocol.
|
|
6
|
+
|
|
7
|
+
## The dig (four layers)
|
|
8
|
+
|
|
9
|
+
### 1. The strata — identify the layers
|
|
10
|
+
|
|
11
|
+
For the repository in front of you, name each layer in one line: the UI
|
|
12
|
+
(what humans see), the server/API (what receives orders), the state (what
|
|
13
|
+
is remembered), the logs (what was recorded). Our own suite has a map:
|
|
14
|
+
`docs/ARCHITECTURE.md`.
|
|
15
|
+
|
|
16
|
+
### 2. The trace — follow one feature end to end
|
|
17
|
+
|
|
18
|
+
Pick ONE feature (e.g. "the virtual register") and trace its full path:
|
|
19
|
+
|
|
20
|
+
- UI: the button/input that triggers it.
|
|
21
|
+
- API: the endpoint it calls (method + path).
|
|
22
|
+
- State: the file it writes/reads.
|
|
23
|
+
- Effect: what the user sees next.
|
|
24
|
+
|
|
25
|
+
Write the trace as a numbered list — no prose walls. If a link in the
|
|
26
|
+
chain is missing, say so: gaps are findings.
|
|
27
|
+
|
|
28
|
+
### 3. The fossil record — read the history
|
|
29
|
+
|
|
30
|
+
- `git log` for the file: each commit message is a fossil — what was the
|
|
31
|
+
INTENT at that moment?
|
|
32
|
+
- `LEARNINGS.md`, `triage.md`, `audit.md`: the incidents that shaped the
|
|
33
|
+
code (our suite keeps these append-only on purpose).
|
|
34
|
+
- Docs: the design decisions (`INDUSTRIAL-LENS.md`, `NEURO-ANATOMY.md`).
|
|
35
|
+
|
|
36
|
+
### 4. The dossier — explain in plain language
|
|
37
|
+
|
|
38
|
+
Produce a dossier with: what it does · how it flows · why each piece
|
|
39
|
+
exists (with the evidence quote) · the risks/gaps · the vocabulary to
|
|
40
|
+
change it. Aim: a non-programmer can give correct orders after reading it.
|
|
41
|
+
|
|
42
|
+
## The standard
|
|
43
|
+
|
|
44
|
+
This organ is Pillar 3 of EL FUEGO — the J.Franco standard
|
|
45
|
+
for human-AI knowledge transfer (docs/EL-FUEGO.md in the suite repo).
|
|
46
|
+
Every dossier must end with the canonical lesson entry so the fire
|
|
47
|
+
persists.
|
|
48
|
+
|
|
49
|
+
## Rules
|
|
50
|
+
|
|
51
|
+
- Evidence first: quote the commit/line, never guess the intent.
|
|
52
|
+
- One feature per dig; depth over breadth.
|
|
53
|
+
- The dossier is a deliverable: append it to the repo docs or the audit
|
|
54
|
+
log, so the next dig builds on it.
|
|
55
|
+
|
|
56
|
+
## Why this matters
|
|
57
|
+
|
|
58
|
+
The code will be written by AI; the VALUE will belong to those who can
|
|
59
|
+
read it. Every dig turns an opaque artifact into an owned asset.
|
package/cordis.patch.yml
ADDED
package/icon.svg
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
|
|
2
|
+
<rect width="64" height="64" rx="14" fill="#4D6BFE"/>
|
|
3
|
+
<path d="M32 12 L32 52 M12 32 L52 32" stroke="#ffffff" stroke-width="3"/>
|
|
4
|
+
<circle cx="32" cy="32" r="14" fill="none" stroke="#ffffff" stroke-width="3.5"/>
|
|
5
|
+
<path d="M46 46 C 42 50, 37 52, 32 52" fill="none" stroke="#FACC15" stroke-width="3.5" stroke-linecap="round"/>
|
|
6
|
+
<circle cx="46" cy="46" r="3" fill="#FACC15"/>
|
|
7
|
+
</svg>
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// @javierfrancoleal/forensics — an organ of the J.Franco agentic workflow.
|
|
2
|
+
// Created by J.Franco. Registers the forensics skill provider and, when the
|
|
3
|
+
// host command registry is available, the /forensics command.
|
|
4
|
+
import { readFile } from "node:fs/promises";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
import { BUNDLED_SKILL_RANK } from "@deepseek-ai/dsh-skill";
|
|
7
|
+
|
|
8
|
+
const PROVIDER_NAME = "javierfrancoleal-forensics";
|
|
9
|
+
const SKILL_BODY_URL = new URL("../assets/forensics.md", import.meta.url);
|
|
10
|
+
const RESOURCE_BASE = { kind: "directory", path: fileURLToPath(new URL("../assets/", import.meta.url)) };
|
|
11
|
+
|
|
12
|
+
const CANDIDATE = {
|
|
13
|
+
name: "forensics",
|
|
14
|
+
description: "The code-forensics organ of the J.Franco agentic workflow: trace one feature end to end, read the fossil record, and produce a plain-language dossier.",
|
|
15
|
+
invocation: { modelInvocable: true, userInvocable: true },
|
|
16
|
+
provider: PROVIDER_NAME,
|
|
17
|
+
source: "bundled",
|
|
18
|
+
resourceBase: RESOURCE_BASE,
|
|
19
|
+
rank: BUNDLED_SKILL_RANK,
|
|
20
|
+
locator: SKILL_BODY_URL,
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const provider = {
|
|
24
|
+
name: PROVIDER_NAME,
|
|
25
|
+
list: () => Promise.resolve([CANDIDATE]),
|
|
26
|
+
async get() {
|
|
27
|
+
return {
|
|
28
|
+
name: CANDIDATE.name,
|
|
29
|
+
description: CANDIDATE.description,
|
|
30
|
+
invocation: CANDIDATE.invocation,
|
|
31
|
+
provider: CANDIDATE.provider,
|
|
32
|
+
source: CANDIDATE.source,
|
|
33
|
+
resourceBase: RESOURCE_BASE,
|
|
34
|
+
content: await readFile(SKILL_BODY_URL, "utf8"),
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const name = "forensics";
|
|
40
|
+
const inject = ["skills"];
|
|
41
|
+
|
|
42
|
+
function apply(ctx) {
|
|
43
|
+
ctx.skills.registerProvider(() => provider);
|
|
44
|
+
const commands = ctx.get("commands");
|
|
45
|
+
if (commands !== undefined) {
|
|
46
|
+
commands.register({
|
|
47
|
+
definitionId: "@javierfrancoleal/forensics",
|
|
48
|
+
name: "forensics",
|
|
49
|
+
description: "Dig into one feature and explain how and why it was built",
|
|
50
|
+
input: { hint: "[the feature, e.g. the virtual register]", attachments: true },
|
|
51
|
+
handler: () => ({ text: "Forensics ON. Name one feature and I will dig: layers, the end-to-end trace, the history that explains it, and a dossier you can order from." }),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export { apply, inject, name };
|
package/locale/ar.json
ADDED
package/locale/de.json
ADDED
package/locale/en.json
ADDED
package/locale/es.json
ADDED
package/locale/fr.json
ADDED
package/locale/it.json
ADDED
package/locale/ja.json
ADDED
package/locale/ko.json
ADDED
package/locale/pt.json
ADDED
package/locale/zh.json
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,55 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@javierfrancoleal/forensics",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "The code-forensics organ of the J.Franco agentic workflow: the archaeological protocol for understanding how AI-written code was made — trace a feature end to end, read the fossil record (commits, LEARNINGS, triage, audit), and produce a plain-language dossier. Created by J.Franco.",
|
|
5
|
+
"author": "J.Franco",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "lib/index.js",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": "./lib/index.js",
|
|
11
|
+
"./cordis.patch.yml": "./cordis.patch.yml",
|
|
12
|
+
"./package.json": "./package.json",
|
|
13
|
+
"./locale/*.json": "./locale/*.json"
|
|
14
|
+
},
|
|
15
|
+
"icon": "./icon.svg",
|
|
16
|
+
"files": [
|
|
17
|
+
"icon.svg",
|
|
18
|
+
"locale/*.json",
|
|
19
|
+
"lib/index.js",
|
|
20
|
+
"assets",
|
|
21
|
+
"cordis.patch.yml",
|
|
22
|
+
"README.md"
|
|
23
|
+
],
|
|
24
|
+
"engines": {
|
|
25
|
+
"node": ">=24",
|
|
26
|
+
"dsh": ">=0.2.1-rc.0"
|
|
27
|
+
},
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": "git+https://github.com/JavierFrancoLeal/jfranco-agentic-suite.git",
|
|
31
|
+
"directory": "jfranco-forensics"
|
|
32
|
+
},
|
|
33
|
+
"homepage": "https://github.com/JavierFrancoLeal/jfranco-agentic-suite",
|
|
34
|
+
"keywords": [
|
|
35
|
+
"deepseek-harness",
|
|
36
|
+
"agentic-workflow",
|
|
37
|
+
"super-agent",
|
|
38
|
+
"code-forensics",
|
|
39
|
+
"archaeology",
|
|
40
|
+
"ai-written-code"
|
|
41
|
+
],
|
|
42
|
+
"dsh": {
|
|
43
|
+
"manifestVersion": 1,
|
|
44
|
+
"bundle": {
|
|
45
|
+
"patch": "./cordis.patch.yml"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"publishConfig": {
|
|
49
|
+
"access": "public"
|
|
50
|
+
},
|
|
51
|
+
"peerDependencies": {
|
|
52
|
+
"@deepseek-ai/cordis": "~4.0.5",
|
|
53
|
+
"@deepseek-ai/dsh-skill": ">=0.2.1-rc.5"
|
|
54
|
+
}
|
|
55
|
+
}
|