Repository navigation
Releases
NJ-Kit 2.4.4: nj-listen
New skill: nj-listen
Gives Claude ears. A meeting recording (audio or video, multitrack, minutes to hours) becomes a timed, speaker-labelled transcript, locally, free and open source, with no cloud call.
- Built for Arabic dialects (Jordanian, Levantine) with MSA and English words mid-sentence.
- Pipeline: Silero VAD → Whisper large-v3-turbo int8 on the Intel iGPU (OpenVINO GenAI) ∥ sherpa-onnx speaker diarization → names from each attendee's self-introduction (ERes2Net voiceprints).
- Measured on a laptop with no graphics card (i5-1334U + Iris Xe): 49.8 minutes of audio in 18.8 minutes.
- Checkpoints per stage, pause/stop/resume, multitrack (one track per speaker),
--selftestwith no models.
Install or update: /plugin update nj-kit.
NJ-Kit 2.4.3
- Dead-code sweep. Knip 5 (JS/TS) and vulture (Python, confidence ≥ 90) over the whole repo; every finding checked by hand before a change.
pdf-typography: removedscripts/--helpandscripts/--help.pages.json, a PDF and its page map written by running the renderer with--helpas the output name; they had shipped since 2.0.0.nj-motion-decktemplate:Root.tsxtakes the frame rate fromtheme.ts'sFPSinstead of a second literal30;Slide.tsx'sPropstype is module-private (only that file uses it).nj-evidence/scripts/kb.py: two… if False else Nonestatements that never ran removed from the self-test.nj-writer/reference/arabic-tashkeel/evidence/corpus.py: are.subwhose replacement always returned the match (a no-op) removed.tests/test_v3.py: an unusedimport re as _reremoved.- Left as they are:
arabic-english-proofreading/scripts/pdf-structure.pyrender_page(..., has_table)keeps its unused parameter (callers pass it; signature kept); the Knip notes from 2.4.2 still hold.
NJ-Kit 2.4.2
nj-methodandnj-kit: the delegation sections now state the plain working mode (2026-10-30) that replaced NJ Governance v3/v4: the session does the work itself on the normal model; subagents only for real parallel work or a crew a skill defines;nj-delegate,nj-agent-ops,nj-superviseandnj-directorstay in the kit and run only when the owner names them.- Knip 5 scan of every JS/TS file (temporary config, scripts treated as entry points, vendored code ignored): no unused files, no unused dependencies. Findings left as they are, with the reason: unlisted
playwright/react/remotion/@receptron/layaimports are by design (each skill's scripts run inside the user's own project, which supplies them); unused entry exports are public functions the skill docs call or template examples;general-video/scripts/frame-packets.mjsimports../../hyperframes/scripts/lib/frame-packets-core.mjs, which the pinned upstreamhyperframesno longer ships — third-party code, reported upstream-side, not patched here.
NJ-Kit 2.4.1
nj-method: the routing table sends commercials, promos, launch and brand films tonj-multimedia; other video still starts athyperframes(ornj-style-filmfor a narrated style film). The checkpoint list names the crew folders a commercial adds before the script.
NJ-Kit 2.4.0
- New kit skill
nj-multimedia(kit now 18 bundled skills; 45 with the installer): an agency-crew method for commercials, launch and brand films. Eight stages, each leaving files a gate checks: intake with a deliverables matrix (aspects × languages decided up front), creative and marketing crews in parallel (measured reference breakdown, style DNA, drawn metaphors, sound plan; positioning, three scripts, aclaims.mdwith a source per claim), a director merge plus a devil pass, one owner stop on the proposal and keyframe boards, sound and motion crews in parallel (one take per voice line, fitted deterministically), review, render, release kit. Ready-to-fill crew briefs, a craft reference (stage, shot, motion grammar per object type, pacing profile, voice and captions, Arabic and RTL, 9:16, end card), review checklists and lessons from the reference runs. scripts/mm.py(stdlib + ffmpeg):init,gate(refuses a stage whose inputs are missing, a brief with empty required slots, a claim without a source, an unapproved storyboard, an unpassed review or render),fit(each line's spoken length against its window before any voice call),probe(duration ±1 frame, size, fps, audio, loudness, language-pair parity),sheet,selftest.scripts/frame_probe.mjs(Playwright): seeks a HyperFrames composition and fails on an element more than 1 px off its declared axis, a rendered face outside the house font (Chrome's platform fonts, not the CSS), Arabic on-screen text with tashkeel, tatweel, Persian letters, Latin punctuation or Arabic-Indic digits, or a page error. Fixture and self-test included.
NJ-Kit 2.3.3
nj-writervoice gate: a product name registered invoice-styles.jsonunderlatin_brands(an entry lists the forms of one name, e.g.QA WrapandQA-Wrap) may stay Latin intts_textof an Arabic narration line, so it is said exactly as in English.voice_style_gate.py(tts_fails(n, vis, tts, brands=())) exempts such a name from the spell-it-out rule (R-TASHKEEL-008); an unregistered Latin word still fails, and a missing Arabic word still fails. Four self-test asserts added.nj-writer/reference/arabic-tashkeel/kb/rules/tashkeel.md: R-TASHKEEL-008 names the exception.- Known, not changed:
voice_style_gate.py --selftestfails in this repo on the placeholder brand in the sample lines (the visible text saysAcme, the tashkeel sample still has the original name); it passes on the author's machine. CI does not run it.
NJ-Kit 2.3.2
NJ-Kit 2.3.2
A small follow-up to 2.3.1. Still 27 plugin skills, 44 with the kit installer.
nj-jirabug template: the evidence rules now state the Arabic file-name rule that 2.3.1 added tonj-qaandnj-jira/SKILL.md:<المشكلة>-<الخدمة>-<التاريخ>-<الوقت>, made bynj-qa/scripts/evidence_name.py. The template still told readers to name files by what they show.nj-qaself-check:test_nj_qa.pynow covers the evidence-name rules: the name format, forbidden characters, the 150-character limit,-2repeats, refusals that name the file,report-checkandpreview-check, andNJQA_LEGACY_EVIDENCE=1. It was missing from 2.3.1.- Not changed:
nj-qa/scripts/creds.pystays the single-account version. The newer multi-account version needs a schema file and default accounts from the author's review hub, which this repo does not ship.
Gates: scripts/publish-check.py (and --selftest), scripts/skill-table.py --check, site/_build/build.py --check, compileall and the kit's unit tests all pass.
NJ-Kit 2.3.1
NJ-Kit 2.3.1
Still 27 plugin skills (44 with the kit installer).
Evidence names are Arabic (nj-qa, nj-jira)
Every screenshot and video is named <المشكلة>-<الخدمة>-<التاريخ>-<الوقت>: a short specific Arabic phrase for the defect, the service's Arabic portal name, YYYY-MM-DD, then HH.MM in 24 hours (Windows has no :). At most 150 characters, -2 for a repeat in the same minute, no English except a ticket code such as PROJ-5494 after the issue.
- New
nj-qa/scripts/evidence_name.pymakes the name (CLI and import) and checks names (--check). nj_qa.pyreport-checkandpreview-checkrefuse any other picture or video name. A run from before the rule setsNJQA_LEGACY_EVIDENCE=1and keeps its old names.nj-jiraSKILL.mdandreferences/bug-template.mdcarry the same rule for Bug evidence.- Forward only: existing files are never renamed.
nj-qa
A blocked or cannot-test note can carry block_cause (data, system or tool). The review check refuses any other value, and refuses it on any other verdict.
agent-halo and nj-chart
Both arrived in 2.3.0. They are unchanged in 2.3.1 and now appear in the website's skill list, which was missing them:
agent-halo: a coloured border and the agent's type at the top of every browser window an agent opens. Cosmetic; screenshots and page text never see it.nj-chart: charts, dashboards and KPI rows that read at a glance, in Arabic or English, light or dark, on Microsoft's Flint chart engine (MIT).
Website
The grouped skill list, its counts and llms.txt are now generated from the plugin's SKILL.md files (site/_build/build.py), so they cannot go stale. The build fails when a plugin skill has no group or no Arabic line, when the kit list differs from nj-kit/bundled, or when a page states a different skill count. CI runs build.py --check. A stale "23 installed by the plugin" now reads 27. The site uses system fonts only.
Release gate
python scripts/publish-check.py reports 0 hits: no credentials, no private project data, no machine paths, no font files.
NJ-Kit 2.3.0: nj-chart, nj-qa, agent-halo
What's new
- nj-chart: charts, dashboards and reports that read at a glance, in Arabic or English, light or dark. Built on Flint (Microsoft, MIT).
- nj-qa: an agent-crew method for testing a ticket's notes on a live system, with script-enforced guards (preflight gate, proof on every verdict, traffic-patch scan, budget stop).
- agent-halo: a coloured border and the agent's type on every browser window an agent opens.
- Updates to existing skills; the plugin now has 27 skills.
scripts/publish-check.py: a release gate that fails on secrets, project data, personal paths and font files.- The README skill table is generated from each
SKILL.md; CI fails when it goes stale.
Install
See the README: add the marketplace, then install the nj-kit plugin in Claude Code.
Licences
MIT. Third-party credits in THIRD_PARTY.md (Flint by Microsoft, MIT).
NJ-Kit assets v1
Files that NJ-Kit's skills use, downloaded on demand by nj-kit/scripts/fetch_assets.py and checked by sha256:
sources.db: the nj-researcher source databasetashkeel-evidence-runs.zip: evidence runs for the Arabic tashkeel knowledge base
Fetch everything: python nj-kit/scripts/fetch_assets.py --all