@javierfrancoleal/forensics 0.0.0-stage → 1.0.0

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 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
- # Temporary Holding Version
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
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
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,52 @@
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
+ ## Rules
43
+
44
+ - Evidence first: quote the commit/line, never guess the intent.
45
+ - One feature per dig; depth over breadth.
46
+ - The dossier is a deliverable: append it to the repo docs or the audit
47
+ log, so the next dig builds on it.
48
+
49
+ ## Why this matters
50
+
51
+ The code will be written by AI; the VALUE will belong to those who can
52
+ read it. Every dig turns an opaque artifact into an owned asset.
@@ -0,0 +1,4 @@
1
+ # @javierfrancoleal/forensics — J.Franco's code-forensics organ.
2
+ - insert:
3
+ - id: forensics
4
+ name: '@javierfrancoleal/forensics'
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
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "التحقيق الجنائي للكود",
4
+ "description": "تتبّع ميزة من البداية إلى النهاية واشرح كيف ولماذا بُنيت."
5
+ }
6
+ }
package/locale/de.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Code-Forensik",
4
+ "description": "Verfolgen Sie eine Funktion durchgängig und erklären Sie, wie und warum sie gebaut wurde."
5
+ }
6
+ }
package/locale/en.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Code Forensics",
4
+ "description": "Trace one feature end to end and explain how and why it was built."
5
+ }
6
+ }
package/locale/es.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Forense de Código",
4
+ "description": "Rastrea una función de punta a punta y explica cómo y por qué se construyó."
5
+ }
6
+ }
package/locale/fr.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Médecine légale du code",
4
+ "description": "Tracez une fonction de bout en bout et expliquez comment et pourquoi elle a été construite."
5
+ }
6
+ }
package/locale/it.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Forense del codice",
4
+ "description": "Traccia una funzione da un capo all'altro e spiega come e perché è stata costruita."
5
+ }
6
+ }
package/locale/ja.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "コードフォレンジック",
4
+ "description": "機能を端から端まで追跡し、どのように、なぜ作られたかを説明します。"
5
+ }
6
+ }
package/locale/ko.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "코드 포렌식",
4
+ "description": "기능을 끝까지 추적하고 어떻게, 왜 만들어졌는지 설명합니다."
5
+ }
6
+ }
package/locale/pt.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Forense de Código",
4
+ "description": "Rastreie uma função de ponta a ponta e explique como e porquê foi construída."
5
+ }
6
+ }
package/locale/zh.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "代码取证",
4
+ "description": "端到端追踪一个功能,并解释它是如何以及为何构建的。"
5
+ }
6
+ }
package/package.json CHANGED
@@ -1,6 +1,19 @@
1
1
  {
2
2
  "name": "@javierfrancoleal/forensics",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "1.0.0",
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": { ".": "./lib/index.js", "./cordis.patch.yml": "./cordis.patch.yml", "./package.json": "./package.json", "./locale/*.json": "./locale/*.json" },
10
+ "icon": "./icon.svg",
11
+ "files": ["icon.svg", "locale/*.json", "lib/index.js", "assets", "cordis.patch.yml", "README.md"],
12
+ "engines": { "node": ">=24", "dsh": ">=0.2.1-rc.0" },
13
+ "repository": { "type": "git", "url": "git+https://github.com/JavierFrancoLeal/jfranco-agentic-suite.git", "directory": "jfranco-forensics" },
14
+ "homepage": "https://github.com/JavierFrancoLeal/jfranco-agentic-suite",
15
+ "keywords": ["deepseek-harness", "agentic-workflow", "super-agent", "code-forensics", "archaeology", "ai-written-code"],
16
+ "dsh": { "manifestVersion": 1, "bundle": { "patch": "./cordis.patch.yml" } },
17
+ "publishConfig": { "access": "public" },
18
+ "peerDependencies": { "@deepseek-ai/cordis": "~4.0.5", "@deepseek-ai/dsh-skill": ">=0.2.1-rc.5" }
19
+ }