Add new JSI Runtime features with Hermes and SynthTrace support.
The material indicates this skill is essentially prompt/documentation-style development guidance from an open-source repository, with no required secrets, no declared remote endpoints, and no standalone execution or data exfiltration behavior described. Based on the provided facts, overall risk is low, with the main caveat being limited supply-chain metadata and unclear maintenance activity.
The material explicitly states that no keys or environment variables are required, and it shows no token collection, storage, or upload mechanism, so credential leakage and abuse risk is low.
No remote endpoints are declared; the content is a local code-modification guide and does not describe sending user data to external services.
The system flags it as prompt-only, and the README only outlines source files to edit and implementation patterns; it does not describe spawning processes, running scripts, or invoking system commands.
The material does not declare runtime ability to read or write local files, databases, or other resources; it only explains which repository files a developer should modify, with no sign of excessive permissions.
The source points to an open-source GitHub repository, making the code in principle auditable, which materially lowers risk; however, the license is unspecified, community stars are 0, and maintenance status is unknown, so supply-chain signals are incomplete and warrant caution.
Copy the install command and let the AI configure it · recommended for beginners
Please install the "modify-jsi-features" skill from askskill: 1. Download https://raw.githubusercontent.com/facebook/hermes/static_h/.claude/skills/modify-jsi-features/SKILL.md 2. Save it as ~/.claude/skills/modify-jsi-features/SKILL.md 3. Reload skills and tell me it's ready
Guide me to add a new method to the JSI Runtime interface, including the interface declaration, Hermes implementation, and SynthTrace replay support. List the files to modify, code structure, and key considerations.
A step-by-step implementation plan covering required files, interface changes, implementation details, and compatibility considerations.
I want to add a new feature to an existing JSI capability. Explain how to update JSI core, the Hermes implementation, and the SynthTrace-related parts consistently, and suggest a recommended development order.
A module-by-module modification guide to help implement changes across the core layer, runtime implementation, and replay support.
Based on the standard process for adding functionality to JSI Runtime, help me check whether I missed any interface declarations, Hermes adaptations, or SynthTrace replay support, and provide a checklist.
A complete checklist covering the interface layer, implementation layer, and replay support for verifying change completeness.
When adding new functionality (methods) to the JSI Runtime interface, you must modify a specific set of files across multiple layers. This skill describes each file, the patterns to follow, and important conventions.
JSI (JavaScript Interface) is an abstraction layer that allows C++ code to interact with JavaScript runtimes. The architecture consists of:
xplat/jsi/jsi/) — The abstract interface definitionsxplat/static_h/API/hermes/) — Hermes-specific implementationxplat/static_h/API/hermes/) — Recording and replay infrastructure for debuggingxplat/jsi/jsi/jsi.h — Add pure virtual method declaration to IRuntime interface AND override declaration in Runtime classxplat/jsi/jsi/jsi.cpp — Add default implementation (if providing one)xplat/jsi/jsi/jsi-inl.h — Add inline helper methods (if needed)xplat/jsi/jsi/decorator.h — Add method overrides to RuntimeDecorator and WithRuntimeDecoratorxplat/jsi/jsi/test/testlib.cpp — Add tests for the JSI APIxplat/static_h/API/hermes/hermes.cpp — Add Hermes-specific implementation in HermesRuntimeImplxplat/static_h/unittests/API/APITest.cpp — Add Hermes-specific testsxplat/static_h/API/hermes/SynthTrace.h — Add new Record typesxplat/static_h/API/hermes/SynthTrace.cpp — Implement Record serializationxplat/static_h/API/hermes/TracingRuntime.h — Declare tracing method overridesxplat/static_h/API/hermes/TracingRuntime.cpp — Implement tracing logicxplat/static_h/API/hermes/SynthTraceParser.cpp — Add parsing for new recordsxplat/static_h/API/hermes/TraceInterpreter.cpp — Add replay logicxplat/static_h/unittests/API/SynthTraceTest.cpp — Add replay testsxplat/static_h/unittests/API/SynthTraceSerializationTest.cpp — Add serialization testsxplat/static_h/unittests/API/SynthTraceParserTest.cpp — Add parser testsWhen adding new features (methods) to the JSI Runtime, you have two options:
Provide a default implementation in jsi::Runtime that works via JavaScript
calls. This allows all runtimes (JSC, V8, etc.) to work without modification.
// jsi.h - Add virtual method with default implementation
virtual void myNewMethod(const Object& obj, const Value& val);
// jsi.cpp - Implement default using JavaScript
void Runtime::myNewMethod(const Object& obj, const Value& val) {
auto myFn = global()
.getPropertyAsObject(*this, "Object")
.getPropertyAsFunction(*this, "myMethod");
myFn.call(*this, obj, val);
}
Make the method pure virtual, requiring all runtimes (JSCRuntime, V8Runtime, HermesRuntime) to implement it. Only use this when a JavaScript-based default is not possible.
jsi.h (JSI Core Interface)Add the pure virtual method declaration to the IRuntime interface, and the override declaration to the Runtime class:
// In IRuntime interface (around line 580)
class JSI_EXPORT IRuntime : public ICast {
// ... existing methods ...
/// Brief description of what the method does.
/// \param obj Description of the object parameter.
/// \param val Description of the value parameter.
/// \return Description of return value (if any).
virtual void myNewMethod(const Object& obj, const Value& val) = 0;
// For methods returning Value, use this pattern:
virtual Value myNewGetter(const Object& obj) = 0;
};
// In Runtime class (around line 730) - add override declarations
class JSI_EXPORT Runtime : public IRuntime {
// ... existing methods ...
…
Programmatically rewrite non-top Git commits without needing an interactive editor.
Write and review GC-safe C++ code for the Hermes VM runtime.
Analyze hermesvm binary size changes and regressions across commit ranges.
Guide for adding a new IR instruction to the Hermes compiler. Use when the user asks to add, create, or define a new IR instruction (Inst/Instruction) in the Hermes intermediate representation. Covers all required files and the patterns for each.
Get idiomatic Relay guidance for React code, debugging, and code reviews.
Write and run Markdown-driven end-to-end tests for Relay apps.