OpenCut
Copilot instructions93k starsChanged 7 months agoMITView on GitHub
Ultracite enforces strict type safety, accessibility standards, and consistent code quality for JavaScript/TypeScript projects using Biome's lightning-fast formatter and linter.
We split this copilot-instructions.md into the rules it gives an agent
150 rules. About 1 is common, 122 are distinctive, and 27 are very specific to this project.
≈1
Common · estimate
Many files like this have a rule of this kind.
≈122
Distinctive · estimate
This author's own choices. Worth a look.
27
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Common: line 19
Consider edge cases and error scenarios
- Distinctive: line 20
Follow the rules below strictly
- Very specific: line 27
Don't use accessKey attribute on any HTML element.
- Very specific: line 28
Don't set aria-hidden="true" on focusable elements.
- Distinctive: line 29
Don't add ARIA roles, states, and properties to elements that don't support them.
- Very specific: line 30
Don't use distracting elements like <marquee> or <blink>.
- Very specific: line 31
Only use the scope prop on <th> elements.
- Distinctive: line 32
Don't assign non-interactive ARIA roles to interactive HTML elements.
- Distinctive: line 33
Make sure label elements have text content and are associated with an input.
- Distinctive: line 34
Don't assign interactive ARIA roles to non-interactive HTML elements.
- Very specific: line 35
Don't assign tabIndex to non-interactive HTML elements.
- Very specific: line 36
Don't use positive integers for tabIndex property.
- Distinctive: line 37
Don't include "image", "picture", or "photo" in img alt prop.
- Distinctive: line 38
Don't use explicit role property that's the same as the implicit/default role.
- Very specific: line 40
Always include a title element for SVG elements.
- Distinctive: line 42
Make sure anchors have content that's accessible to screen readers.
- Distinctive: line 45
Make sure ARIA properties are valid for the element's supported roles.
- Very specific: line 46
Always include a type attribute for button elements.
- Very specific: line 49
Always include a lang attribute on the html element.
- Very specific: line 50
Always include a title attribute for iframe elements.
- Distinctive: line 54
Use semantic elements instead of role attributes in JSX.
- Distinctive: line 55
Make sure all anchors are valid and navigable.
- Very specific: line 56
Ensure all ARIA properties (aria-*) are valid.
- Distinctive: line 57
Use valid, non-abstract ARIA roles for elements with ARIA roles.
- Distinctive: line 58
Use valid ARIA state and property values.
- Very specific: line 59
Use valid values for the autocomplete attribute on input elements.
- Very specific: line 60
Use correct ISO language/country codes for the lang attribute.
- Distinctive: line 64
Don't use consecutive spaces in regular expression literals.
- Very specific: line 65
Don't use the arguments object.
- Distinctive: line 66
Don't use primitive type aliases or misleading types.
- Distinctive: line 67
Don't use the comma operator.
- Distinctive: line 68
Don't use empty type parameters in type aliases and interfaces.
- Distinctive: line 69
Don't write functions that exceed a given Cognitive Complexity score.
- Distinctive: line 70
Don't nest describe() blocks too deeply in test files.
- Distinctive: line 71
Don't use unnecessary boolean casts.
- Distinctive: line 72
Don't use unnecessary callbacks with flatMap.
- Distinctive: line 73
Use for...of statements instead of Array.forEach.
- Distinctive: line 74
Don't create classes that only have static members (like a static namespace).
- Distinctive: line 75
Don't use this and super in static contexts.
- Distinctive: line 76
Don't use unnecessary catch clauses.
- Distinctive: line 77
Don't use unnecessary constructors.
- Distinctive: line 78
Don't use unnecessary continue statements.
- Distinctive: line 79
Don't export empty modules that don't change anything.
- Distinctive: line 80
Don't use unnecessary escape sequences in regular expression literals.
- Distinctive: line 81
Don't use unnecessary fragments.
- Distinctive: line 82
Don't use unnecessary labels.
- Distinctive: line 83
Don't use unnecessary nested block statements.
- Distinctive: line 84
Don't rename imports, exports, and destructured assignments to the same name.
- Distinctive: line 85
Don't use unnecessary string or template literal concatenation.
- Distinctive: line 86
Don't use String.raw in template literals when there are no escape sequences.
- Distinctive: line 87
Don't use useless case statements in switch statements.
- Distinctive: line 88
Don't use ternary operators when simpler alternatives exist.
- Very specific: line 89
Don't use useless this aliasing.
- Distinctive: line 90
Don't use any or unknown as type constraints.
- Distinctive: line 91
Don't initialize variables to undefined.
- Distinctive: line 92
Don't use the void operators (they're not familiar).
- Distinctive: line 93
Use arrow functions instead of function expressions.
- Distinctive: line 94
Use Date.now() to get milliseconds since the Unix Epoch.
- Distinctive: line 95
Use .flatMap() instead of map().flat() when possible.
- Distinctive: line 96
Use literal property access instead of computed property access.
- Distinctive: line 97
Don't use parseInt() or Number.parseInt() when binary, octal, or hexadecimal literals work.
- Distinctive: line 98
Use concise optional chaining instead of chained logical expressions.
- Distinctive: line 99
Use regular expression literals instead of the RegExp constructor when possible.
- Distinctive: line 100
Don't use number literal object member names that aren't base 10 or use underscore separators.
- Distinctive: line 101
Remove redundant terms from logical expressions.
- Distinctive: line 102
Use while loops instead of for loops when you don't need initializer and update expressions.
- Distinctive: line 103
Don't pass children as props.
- Distinctive: line 104
Don't reassign const variables.
- Distinctive: line 105
Don't use constant expressions in conditions.
- Very specific: line 106
Don't use Math.min and Math.max to clamp values when the result is constant.
- Distinctive: line 107
Don't return a value from a constructor.
- Distinctive: line 108
Don't use empty character classes in regular expression literals.
- Distinctive: line 109
Don't use empty destructuring patterns.
- Distinctive: line 110
Don't call global object properties as functions.
- Distinctive: line 111
Don't declare functions and vars that are accessible outside their block.
- Distinctive: line 112
Make sure builtins are correctly instantiated.
- Distinctive: line 113
Don't use super() incorrectly inside classes.
- Distinctive: line 114
Don't use variables and function parameters before they're declared.
- Distinctive: line 115
Don't use 8 and 9 escape sequences in string literals.
- Distinctive: line 116
Don't use literal numbers that lose precision.
- Distinctive: line 120
Don't use the return value of React.render.
- Distinctive: line 121
Make sure all dependencies are correctly specified in React hooks.
- Distinctive: line 122
Make sure all React hooks are called from the top level of component functions.
- Distinctive: line 123
Don't forget key props in iterators and collection literals.
- Distinctive: line 124
Don't destructure props inside JSX components in Solid projects.
- Distinctive: line 125
Don't define React components inside other components.
- Distinctive: line 126
Don't use event handlers on non-interactive elements.
- Distinctive: line 127
Don't assign to React component props.
- Very specific: line 128
Don't use both children and dangerouslySetInnerHTML props on the same element.
- Distinctive: line 129
Don't use dangerous JSX props.
- Distinctive: line 130
Don't use Array index in keys.
- Distinctive: line 131
Don't insert comments as text nodes.
- Distinctive: line 132
Don't assign JSX properties multiple times.
- Distinctive: line 133
Don't add extra closing tags for components without children.
- Very specific: line 134
Use <>...</> instead of <Fragment>...</Fragment>.
- Distinctive: line 139
Don't assign a value to itself.
- Distinctive: line 140
Don't return a value from a setter.
- Distinctive: line 141
Don't compare expressions that modify string case with non-compliant values.
- Distinctive: line 142
Don't use lexical declarations in switch clauses.
- Distinctive: line 143
Don't use variables that haven't been declared in the document.
- Distinctive: line 144
Don't write unreachable code.
- Distinctive: line 145
Make sure super() is called exactly once on every code path in a class constructor before this is accessed if the class has a superclass.
- Distinctive: line 146
Don't use control flow statements in finally blocks.
- Distinctive: line 147
Don't use optional chaining where undefined values aren't allowed.
- Distinctive: line 148
Don't have unused function parameters.
- Distinctive: line 149
Don't have unused imports.
- Distinctive: line 150
Don't have unused labels.
- Distinctive: line 151
Don't have unused private class members.
- Distinctive: line 152
Don't have unused variables.
- Distinctive: line 153
Make sure void (self-closing) elements don't have children.
- Distinctive: line 154
Don't return a value from a function with the return type 'void'
- Distinctive: line 155
Use isNaN() when checking for NaN.
- Distinctive: line 156
Make sure "for" loop update clauses move the counter in the right direction.
- Distinctive: line 157
Make sure typeof expressions are compared to valid values.
- Distinctive: line 158
Make sure generator functions contain yield.
- Distinctive: line 159
Don't use await inside loops.
- Distinctive: line 160
Don't use bitwise operators.
- Distinctive: line 161
Don't use expressions where the operation doesn't change the value.
- Distinctive: line 162
Make sure Promise-like statements are handled appropriately.
- Distinctive: line 163
Don't use dirname and filename in the global scope.
- Distinctive: line 165
Don't use configured elements.
- Distinctive: line 166
Don't hardcode sensitive data like API keys and tokens.
- Distinctive: line 167
Don't let variable declarations shadow variables from outer scopes.
- Distinctive: line 168
Don't use the TypeScript directive @ts-ignore.
- Distinctive: line 170
Don't use useless backreferences in regular expressions that always match empty strings.
- Distinctive: line 171
Don't use unnecessary escapes in string literals.
- Distinctive: line 172
Don't use useless undefined.
- Distinctive: line 173
Make sure getters and setters for the same property are next to each other in class and object definitions.
- Distinctive: line 174
Make sure object literals are declared consistently (defaults to explicit definitions).
- Distinctive: line 175
Use static Response methods instead of new Response() constructor when possible.
- Distinctive: line 176
Make sure switch-case statements are exhaustive.
- Very specific: line 177
Make sure the preconnect attribute is used when using Google Fonts.
- Very specific: line 178
Use Array#{indexOf,lastIndexOf}() instead of Array#{findIndex,findLastIndex}() when looking for the index of an item.
- Distinctive: line 179
Make sure iterable callbacks return consistent values.
- Very specific: line 180
Use with { type: "json" } for JSON module imports.
- Distinctive: line 181
Use numeric separators in numeric literals.
- Very specific: line 182
Use object spread instead of Object.assign() when constructing new objects.
- Very specific: line 183
Always use the radix argument when using parseInt().
- Distinctive: line 184
Make sure JSDoc comment lines start with a single asterisk, except for the first one.
- Very specific: line 186
Don't use spread (...) syntax on accumulators.
- Very specific: line 187
Don't use the delete operator.
- Distinctive: line 188
Don't access namespace imports dynamically.
- Distinctive: line 189
Don't use namespace imports.
- Very specific: line 191
Don't use target="_blank" without rel="noopener".
- Distinctive: line 195
Don't use TypeScript enums.
- Distinctive: line 196
Don't export imported variables.
- Distinctive: line 197
Don't add type annotations to variables, parameters, and class properties that are initialized with literal expressions.
- Distinctive: line 198
Don't use TypeScript namespaces.
- Very specific: line 199
Don't use non-null assertions with the !
- Distinctive: line 200
Don't use parameter properties in class constructors.
≈ “Common” is an estimate: at least 1 in 5 of the 3,669 Copilot instructions files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Project Context
Ultracite enforces strict type safety, accessibility standards, and consistent code quality for JavaScript/TypeScript projects using Biome's lightning-fast formatter and linter.
Key Principles
- Zero configuration required
- Subsecond performance
- Maximum type safety
- AI-friendly code generation
Before Writing Code
- Analyze existing patterns in the codebase
- Consider edge cases and error scenarios
- Follow the rules below strictly
- Validate accessibility requirements
Rules
Accessibility (a11y)
- Don't use
accessKeyattribute on any HTML element. - Don't set
aria-hidden="true"on focusable elements. - Don't add ARIA roles, states, and properties to elements that don't support them.
- Don't use distracting elements like
<marquee>or<blink>. - Only use the
scopeprop on<th>elements. - Don't assign non-interactive ARIA roles to interactive HTML elements.
- Make sure label elements have text content and are associated with an input.
- Don't assign interactive ARIA roles to non-interactive HTML elements.
- Don't assign
tabIndexto non-interactive HTML elements. - Don't use positive integers for
tabIndexproperty. - Don't include "image", "picture", or "photo" in img alt prop.
- Don't use explicit role property that's the same as the implicit/default role.
- Make static elements with click handlers use a valid role attribute.
- Always include a
titleelement for SVG elements. - Give all elements requiring alt text meaningful information for screen readers.
- Make sure anchors have content that's accessible to screen readers.
- Assign
tabIndexto non-interactive HTML elements witharia-activedescendant. - Include all required ARIA attributes for elements with ARIA roles.
- Make sure ARIA properties are valid for the element's supported roles.
- Always include a
typeattribute for button elements. - Make elements with interactive roles and handlers focusable.
- Give heading elements content that's accessible to screen readers (not hidden with
aria-hidden). - Always include a
langattribute on the html element. - Always include a
titleattribute for iframe elements. - Accompany
onClickwith at least one of:onKeyUp,onKeyDown, oronKeyPress. - Accompany
onMouseOver/onMouseOutwithonFocus/onBlur. - Include caption tracks for audio and video elements.
- Use semantic elements instead of role attributes in JSX.
- Make sure all anchors are valid and navigable.
- Ensure all ARIA properties (
aria-*) are valid. - Use valid, non-abstract ARIA roles for elements with ARIA roles.
- Use valid ARIA state and property values.
- Use valid values for the
autocompleteattribute on input elements. - Use correct ISO language/country codes for the
langattribute.
Code Complexity and Quality
- Don't use consecutive spaces in regular expression literals.
- Don't use the
argumentsobject. - Don't use primitive type aliases or misleading types.
- Don't use the comma operator.
- Don't use empty type parameters in type aliases and interfaces.
- Don't write functions that exceed a given Cognitive Complexity score.
- Don't nest describe() blocks too deeply in test files.
- Don't use unnecessary boolean casts.
- Don't use unnecessary callbacks with flatMap.
- Use for...of statements instead of Array.forEach.
- Don't create classes that only have static members (like a static namespace).
- Don't use this and super in static contexts.
- Don't use unnecessary catch clauses.
- Don't use unnecessary constructors.
- Don't use unnecessary continue statements.
- Don't export empty modules that don't change anything.
- Don't use unnecessary escape sequences in regular expression literals.
- Don't use unnecessary fragments.
- Don't use unnecessary labels.
- Don't use unnecessary nested block statements.
- Don't rename imports, exports, and destructured assignments to the same name.
- Don't use unnecessary string or template literal concatenation.
- Don't use String.raw in template literals when there are no escape sequences.
- Don't use useless case statements in switch statements.
- Don't use ternary operators when simpler alternatives exist.
- Don't use useless
thisaliasing. - Don't use any or unknown as type constraints.
- Don't initialize variables to undefined.
- Don't use the void operators (they're not familiar).
- Use arrow functions instead of function expressions.
- Use Date.now() to get milliseconds since the Unix Epoch.
- Use .flatMap() instead of map().flat() when possible.
- Use literal property access instead of computed property access.
- Don't use parseInt() or Number.parseInt() when binary, octal, or hexadecimal literals work.
- Use concise optional chaining instead of chained logical expressions.
- Use regular expression literals instead of the RegExp constructor when possible.
- Don't use number literal object member names that aren't base 10 or use underscore separators.
- Remove redundant terms from logical expressions.
- Use while loops instead of for loops when you don't need initializer and update expressions.
- Don't pass children as props.
- Don't reassign const variables.
- Don't use constant expressions in conditions.
- Don't use
Math.minandMath.maxto clamp values when the result is constant. - Don't return a value from a constructor.
- Don't use empty character classes in regular expression literals.
- Don't use empty destructuring patterns.
- Don't call global object properties as functions.
- Don't declare functions and vars that are accessible outside their block.
- Make sure builtins are correctly instantiated.
- Don't use super() incorrectly inside classes. Also check that super() is called in classes that extend other constructors.
- Don't use variables and function parameters before they're declared.
- Don't use 8 and 9 escape sequences in string literals.
- Don't use literal numbers that lose precision.
React and JSX Best Practices
- Don't use the return value of React.render.
- Make sure all dependencies are correctly specified in React hooks.
- Make sure all React hooks are called from the top level of component functions.
- Don't forget key props in iterators and collection literals.
- Don't destructure props inside JSX components in Solid projects.
- Don't define React components inside other components.
- Don't use event handlers on non-interactive elements.
- Don't assign to React component props.
- Don't use both
childrenanddangerouslySetInnerHTMLprops on the same element. - Don't use dangerous JSX props.
- Don't use Array index in keys.
- Don't insert comments as text nodes.
- Don't assign JSX properties multiple times.
- Don't add extra closing tags for components without children.
- Use
<>...</>instead of<Fragment>...</Fragment>. - Watch out for possible "wrong" semicolons inside JSX elements.
Correctness and Safety
- Don't assign a value to itself.
- Don't return a value from a setter.
- Don't compare expressions that modify string case with non-compliant values.
- Don't use lexical declarations in switch clauses.
- Don't use variables that haven't been declared in the document.
- Don't write unreachable code.
- Make sure super() is called exactly once on every code path in a class constructor before this is accessed if the class has a superclass.
- Don't use control flow statements in finally blocks.
- Don't use optional chaining where undefined values aren't allowed.
- Don't have unused function parameters.
- Don't have unused imports.
- Don't have unused labels.
- Don't have unused private class members.
- Don't have unused variables.
- Make sure void (self-closing) elements don't have children.
- Don't return a value from a function with the return type 'void'
- Use isNaN() when checking for NaN.
- Make sure "for" loop update clauses move the counter in the right direction.
- Make sure typeof expressions are compared to valid values.
- Make sure generator functions contain yield.
- Don't use await inside loops.
- Don't use bitwise operators.
- Don't use expressions where the operation doesn't change the value.
- Make sure Promise-like statements are handled appropriately.
- Don't use **dirname and **filename in the global scope.
- Prevent import cycles.
- Don't use configured elements.
- Don't hardcode sensitive data like API keys and tokens.
- Don't let variable declarations shadow variables from outer scopes.
- Don't use the TypeScript directive @ts-ignore.
- Prevent duplicate polyfills from Polyfill.io.
- Don't use useless backreferences in regular expressions that always match empty strings.
- Don't use unnecessary escapes in string literals.
- Don't use useless undefined.
- Make sure getters and setters for the same property are next to each other in class and object definitions.
- Make sure object literals are declared consistently (defaults to explicit definitions).
- Use static Response methods instead of new Response() constructor when possible.
- Make sure switch-case statements are exhaustive.
- Make sure the
preconnectattribute is used when using Google Fonts. - Use
Array#{indexOf,lastIndexOf}()instead ofArray#{findIndex,findLastIndex}()when looking for the index of an item. - Make sure iterable callbacks return consistent values.
- Use
with { type: "json" }for JSON module imports. - Use numeric separators in numeric literals.
- Use object spread instead of
Object.assign()when constructing new objects. - Always use the radix argument when using
parseInt(). - Make sure JSDoc comment lines start with a single asterisk, except for the first one.
- Include a description parameter for
Symbol(). - Don't use spread (
...) syntax on accumulators. - Don't use the
deleteoperator. - Don't access namespace imports dynamically.
- Don't use namespace imports.
- Declare regex literals at the top level.
- Don't use
target="_blank"withoutrel="noopener".
TypeScript Best Practices
- Don't use TypeScript enums.
- Don't export imported variables.
- Don't add type annotations to variables, parameters, and class properties that are initialized with literal expressions.
- Don't use TypeScript namespaces.
- Don't use non-null assertions with the
!postfix operator. - Don't use parameter properties in class constructors.
- Don't use user-defined types.
- Use
as constinstead of literal types and type annotations. - Use either
T[]orArray<T>consistently. - Initialize each enum member value explicitly.
- Use
export typefor types. - Use
import typefor types. - Make sure all enum members are literal values.
- Don't use TypeScript const enum.
- Don't declare empty interfaces.
- Don't let variables evolve into any type through reassignments.
- Don't use the any type.
- Don't misuse the non-null assertion operator (!) in TypeScript files.
- Don't use implicit any type on variable declarations.
- Don't merge interfaces and classes unsafely.
- Don't use overload signatures that aren't next to each other.
- Use the namespace keyword instead of the module keyword to declare TypeScript namespaces.
Style and Consistency
- Don't use global
eval(). - Don't use callbacks in asynchronous tests and hooks.
- Don't use negation in
ifstatements that haveelseclauses. - Don't use nested ternary expressions.
- Don't reassign function parameters.
- This rule lets you specify global variable names you don't want to use in your application.
- Don't use specified modules when loaded by import or require.
- Don't use constants whose value is the upper-case version of their name.
- Use
String.slice()instead ofString.substr()andString.substring(). - Don't use template literals if you don't need interpolation or special-character handling.
- Don't use
elseblocks when theifblock breaks early. - Don't use yoda expressions.
- Don't use Array constructors.
- Use
at()instead of integer index access. - Follow curly brace conventions.
- Use
else ifinstead of nestedifstatements inelseclauses. - Use single
ifstatements instead of nestedifclauses. - Use
newfor all builtins exceptString,Number, andBoolean. - Use consistent accessibility modifiers on class properties and methods.
- Use
constdeclarations for variables that are only assigned once. - Put default function parameters and optional function parameters last.
- Include a
defaultclause in switch statements. - Use the
**operator instead ofMath.pow. - Use
for-ofloops when you need the index to extract an item from the iterated array. - Use
node:assert/strictovernode:assert. - Use the
node:protocol for Node.js builtin modules. - Use Number properties instead of global ones.
- Use assignment operator shorthand where possible.
- Use function types instead of object types with call signatures.
- Use template literals over string concatenation.
- Use
newwhen throwing an error. - Don't throw non-Error values.
- Use
String.trimStart()andString.trimEnd()overString.trimLeft()andString.trimRight(). - Use standard constants instead of approximated literals.
- Don't assign values in expressions.
- Don't use async functions as Promise executors.
- Don't reassign exceptions in catch clauses.
- Don't reassign class members.
- Don't compare against -0.
- Don't use labeled statements that aren't loops.
- Don't use void type outside of generic or return types.
- Don't use console.
- Don't use control characters and escape sequences that match control characters in regular expression literals.
- Don't use debugger.
- Don't assign directly to document.cookie.
- Use
===and!==. - Don't use duplicate case labels.
- Don't use duplicate class members.
- Don't use duplicate conditions in if-else-if chains.
- Don't use two keys with the same name inside objects.
- Don't use duplicate function parameter names.
- Don't have duplicate hooks in describe blocks.
- Don't use empty block statements and static blocks.
- Don't let switch clauses fall through.
- Don't reassign function declarations.
- Don't allow assignments to native objects and read-only global variables.
- Use Number.isFinite instead of global isFinite.
- Use Number.isNaN instead of global isNaN.
- Don't assign to imported bindings.
- Don't use irregular whitespace characters.
- Don't use labels that share a name with a variable.
- Don't use characters made with multiple code points in character class syntax.
- Make sure to use new and constructor properly.
- Don't use shorthand assign when the variable appears on both sides.
- Don't use octal escape sequences in string literals.
- Don't use Object.prototype builtins directly.
- Don't redeclare variables, functions, classes, and types in the same scope.
- Don't have redundant "use strict".
- Don't compare things where both sides are exactly the same.
- Don't let identifiers shadow restricted names.
- Don't use sparse arrays (arrays with holes).
- Don't use template literal placeholder syntax in regular strings.
- Don't use the then property.
- Don't use unsafe negation.
- Don't use var.
- Don't use with statements in non-strict contexts.
- Make sure async functions actually use await.
- Make sure default clauses in switch statements come last.
- Make sure to pass a message value when creating a built-in error.
- Make sure get methods always return a value.
- Use a recommended display strategy with Google Fonts.
- Make sure for-in loops include an if statement.
- Use Array.isArray() instead of instanceof Array.
- Make sure to use the digits argument with Number#toFixed().
- Make sure to use the "use strict" directive in script files.
Next.js Specific Rules
- Don't use
<img>elements in Next.js projects. - Don't use
<head>elements in Next.js projects. - Don't import next/document outside of pages/_document.jsx in Next.js projects.
- Don't use the next/head module in pages/_document.js on Next.js projects.
Testing Best Practices
- Don't use export or module.exports in test files.
- Don't use focused tests.
- Make sure the assertion function, like expect, is placed inside an it() function call.
- Don't use disabled tests.
Common Tasks
npx ultracite init- Initialize Ultracite in your projectnpx ultracite format- Format and fix code automaticallynpx ultracite lint- Check for issues without fixing
Example: Error Handling
// ✅ Good: Comprehensive error handling
try {
const result = await fetchData();
return { success: true, data: result };
} catch (error) {
console.error("API call failed:", error);
return { success: false, error: error.message };
}
// ❌ Bad: Swallowing errors
try {
return await fetchData();
} catch (e) {
console.log(e);
}Trending
Less talk lately.about the whole repository
Who's talking about OpenCut-app/OpenCut
- Hyperautomation Labs“OpenCut: The FREE CapCut Alternative 67,000 Developers Starred (I Tested It)”YouTube · Jul 14, 2026 · 12k views
- Compute For Humans“Will This Free & Open Source App Replace CapCut?”YouTube · Jul 21, 2025 · 8.8k views
- Codedigipt“OpenCut : The FR*EE Open Source Alter*native to Cap*Cut!”YouTube · Jul 14, 2026 · 7.6k views
- Alex Hitt“OpenCut vs Capcut: How to Download OpenCut Video Editor App for PC, Windows, Linux, and Mac”YouTube · Jun 26, 2026 · 6.7k views
- Evolution with AI“OpenCut: The Free Open-Source CapCut Alternative (No Watermark)”YouTube · Aug 31, 2026 · 3.1k views
The biggest 5 of 103 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 103
Talked about on Bluesky, YouTube, GitHub, the web and Hacker News (103 times).
On Bluesky · 37
- Aug 3, 2025The open-source CapCut alternative to edit videos. No watermarks or subscriptions and works on all devices github.com/OpenCut-app/...… — @cyberciti.biz169 likes and reposts · 2 replies
- Jul 1, 2026OpenCut est un jeune projet open-source sous licence MIT, permettant de monter des vidéos sur le web, desktop et mobile et se positionne… — @ponceto91.bsky.social63 likes and reposts · 1 reply
- Jul 14, 2025opencut.app is an #opensource video editor. A "CapCut alternative". There's a wait list now, but the repo is: github.com/OpenCut-app/...… — @davidbisset.com12 likes and reposts
- Jul 21, 2026OpenCut, alternative open source (MIT) à CapCut pour le web, desktop et mobile. Core Rust, architecture plugin-first, mode headless et… — @camilleroux.com6 likes and reposts · 1 reply
- Aug 10, 2026🔗 Liens utiles OpenCut : 👉 Le code : github.com/OpenCut-a... 👉 En savoir plus : https://opencut.app/ — @bearstech.com4 likes and reposts
32 more on Bluesky
- Jul 2, 2026🚀 Skyrocketing! 🚀 (200+ new stars) 📦 OpenCut-app / OpenCut ⭐ 61,261 (+348) 🗒 TypeScript The open-source CapCut alternative — @github-trending-js.bsky.social4 likes and reposts · 1 reply
- Jul 14, 2025great to see #OpenCut: The #opensource #CapCut alternative github.com/OpenCut-app/... #github — @5h15h.bsky.social4 likes and reposts · 1 reply
- Aug 14, 2026🚀 Skyrocketing! 🚀 (200+ new stars) 📦 OpenCut-app / OpenCut ⭐ 82,879 (+238) 🗒 TypeScript The open-source CapCut alternative — @github-trending.bsky.social3 likes and reposts · 1 reply
- Oct 23, 2025Envie d’un éditeur vidéo open‑source, gratuit, sans filigrane, et qui fonctionne sur web, desktop et mobile ? Ne cherchez plus : OpenCut… — @yohann.ciurlik.fr3 likes and reposts
- Oct 3, 2026🚀 Skyrocketing! 🚀 (200+ new stars) 📦 OpenCut-app / OpenCut ⭐ 91,339 (+234) 🗒 TypeScript The open-source CapCut alternative — @github-trending-js.bsky.social2 likes and reposts
- Aug 21, 2026🔥 Hot Repo! 🔥 (100+ new stars) 📦 OpenCut-app / OpenCut ⭐ 85,289 (+182) 🗒 TypeScript The open-source CapCut alternative — @github-trending-js.bsky.social2 likes and reposts
- Jul 18, 2026💎 Hidden Gem! 💎 (1000+ new stars) 📦 OpenCut-app / OpenCut ⭐ 74,597 (+1,077) 🗒 TypeScript The open-source CapCut alternative — @github-trending-js.bsky.social2 likes and reposts · 1 reply
- Jul 16, 2026the open-source capcut alternative just hit 73k stars. OpenCut: a full video editor in your browser. no account, no watermark, nothing… — @epicvibecoder.bsky.social2 likes and reposts
- Jul 13, 2026💎 Hidden Gem! 💎 (1000+ new stars) 📦 OpenCut-app / OpenCut ⭐ 64,302 (+1,077) 🗒 TypeScript The open-source CapCut alternative — @github-trending-js.bsky.social2 likes and reposts · 1 reply
- Jul 13, 2026今日のGitHubトレンド OpenCut-app/OpenCut OpenCutは、ウェブ、デスクトップ、およびモバイルで利用可能な、無料かつオープンソースのビデオエディターです。 現在はアプリケーションの全体的な書き直しが進められています。 — @dailygithubtrends.bsky.social2 likes and reposts · 1 reply
- Jul 13, 2025OpenCut: The open-source CapCut alternative | Discussion — @hackernewsbot.bsky.social2 likes and reposts
- Jul 11, 2025Oh hell yes, cheers GitHub trending github.com/OpenCut-app/... — @fenn-boy.creaturein.space2 likes and reposts
- Jun 23, 2025github.com/OpenCut-app/... — @cyberfrancis.bsky.social2 likes and reposts
- Oct 3, 2026🚀 Skyrocketing! 🚀 (200+ new stars) 📦 OpenCut-app / OpenCut ⭐ 91,339 (+234) 🗒 TypeScript The open-source CapCut alternative — @github-trending.bsky.social1 likes and repost
- Sep 20, 2026🔥 Hot Repo! 🔥 (100+ new stars) 📦 OpenCut-app / OpenCut ⭐ 89,936 (+126) 🗒 TypeScript The open-source CapCut alternative — @github-trending-js.bsky.social1 likes and repost
- Aug 26, 2026🎉 Celebrating! 🎉 (500+ new stars) 📦 OpenCut-app / OpenCut ⭐ 86,651 (+943) 🗒 TypeScript The open-source CapCut alternative — @github-trending-js.bsky.social1 likes and repost · 1 reply
- Aug 16, 2026今日のGitHubトレンド OpenCut-app/OpenCut ウェブ、デスクトップ、モバイルで動作する無料のオープンソース動画編集ソフトを提供することを目的としています。 — @dailygithubtrends.bsky.social1 likes and repost
- Aug 12, 2026🚀 Skyrocketing! 🚀 (200+ new stars) 📦 OpenCut-app / OpenCut ⭐ 82,488 (+228) 🗒 TypeScript The open-source CapCut alternative — @github-trending-js.bsky.social1 likes and repost · 1 reply
- Jul 17, 2026💎 Hidden Gem! 💎 (1000+ new stars) 📦 OpenCut-app / OpenCut ⭐ 74,597 (+1,077) 🗒 TypeScript The open-source CapCut alternative — @github-trending.bsky.social1 likes and repost · 1 reply
- Jul 13, 2026💎 Hidden Gem! 💎 (1000+ new stars) 📦 OpenCut-app / OpenCut ⭐ 64,302 (+1,077) 🗒 TypeScript The open-source CapCut alternative — @github-trending.bsky.social1 likes and repost · 1 reply
- Jul 12, 2026hi nice to meet this. fuck Microsoft, fuck HP, and now… introducing… fuck CapCut so here’s an open source and free version called OpenCut… — @sethdonut.bsky.social1 likes and repost
- May 13, 2026I just starred OpenCut-app/OpenCut on GitHub: https://github.com/OpenCut-app/OpenCut — @chiefgyk3d.com1 likes and repost
- Jul 21, 2025動画編集アプリCapCutのオープンソース代替。 — @matsuu.bsky.social1 likes and repost
- Jul 14, 2025OpenCut: The open-source CapCut alternative View Article | Join the HN Conversation Summary of HN discussion 🧵👇 #hacker-news — @hncompanion.com1 likes and repost · 1 reply
- Jul 14, 2025オープンカットオープンソースのCapCut代替製品 OpenCut: The open-source CapCut alternative 🔺 339 💬 29 🔗 HN Post | Article — @hacker-news-jp.bsky.social1 likes and repost · 1 reply
- Jul 13, 2025OpenCut: The open-source CapCut alternative view on hacker news — @ycombinatorbot.bsky.social1 likes and repost
- Jul 13, 2025OpenCut: The open-source CapCut alternative https://github.com/OpenCut-app/OpenCut https://news.ycombinator.com/item?id=44553752 — @hn100.atproto.rocks1 likes and repost
- Jun 28, 2025プライバシー重視で基本機能が無料の動画編集ソフト、OpenCut。Web・デスクトップ・モバイル対応で、タイムライン編集やマルチトラックに対応しているらしい。CapCutの代替として期待できそう。 yug1224 starred OpenCut-app/OpenCut… — @yug1224.com1 likes and repost
- Oct 14, 2026🚀 Skyrocketing! 🚀 (200+ new stars) 📦 OpenCut-app / OpenCut ⭐ 94,253 (+296) 🗒 TypeScript The open-source CapCut alternative — @github-trending-js.bsky.social0 likes and reposts · 1 reply
- Aug 27, 2026💎 Hidden Gem! 💎 (1000+ new stars) 📦 OpenCut-app / OpenCut ⭐ 87,119 (+1,040) 🗒 TypeScript The open-source CapCut alternative — @github-trending.bsky.social0 likes and reposts · 1 reply
- Aug 18, 2026🎉 Celebrating! 🎉 (500+ new stars) 📦 OpenCut-app / OpenCut ⭐ 84,485 (+682) 🗒 TypeScript The open-source CapCut alternative — @github-trending.bsky.social0 likes and reposts · 1 reply
- Jul 14, 2026公式GitHubで確認すると、MITの無料CapCut代替なのは本当です! ただし Rust core、3環境の一本化、第三者プラグイン、MCP server は README では「これから来るもの」。今使うなら classic 版、書き換え版はまだ準備中と明記されています。… — @mint-echosphere.bsky.social0 likes and reposts · 1 reply
On YouTube · 25
- Jul 14, 2026OpenCut: The FREE CapCut Alternative 67,000 Developers Starred (I Tested It) — Hyperautomation Labssays it tested it12k views · 47 comments
- Jul 21, 2025Will This Free & Open Source App Replace CapCut? — Compute For Humans8.8k views · 22 comments
- Jul 14, 2026OpenCut : The FR*EE Open Source Alter*native to Cap*Cut! — Codedigipt7.6k views · 5 comments
- Jun 26, 2026OpenCut vs Capcut: How to Download OpenCut Video Editor App for PC, Windows, Linux, and Mac — Alex Hitt6.7k views · 4 comments
- Aug 31, 2026OpenCut: The Free Open-Source CapCut Alternative (No Watermark) — Evolution with AI3.1k views
20 more on YouTube
- Jun 21, 2026OpenCut — Free Open Source CapCut Alternative (58.5K Stars) — Kuro2k views · 2 comments
- Jun 26, 2026OpenCut: The Free, Open-Source CapCut — Emil Faschang1.9k views · 2 comments
- Aug 15, 2026OpenCut GitHub Overview: Local Browser Editing Without Paywalls, Uploads, or Vendor Lock In — Alex Hitt1.6k views
- Jun 7, 2026The Open Source Alternative to CapCut — Github Signals903 views
- Jan 18, 2026OpenCut Review: The Best Open Source Video Editor (No Watermarks) — Blueprint Bytes529 views
- Sep 29, 2026OpenCut: The Open-Source AI Video Editor Changing Video Editing? — AI Tech with Ehsan460 views
- Aug 16, 2026OpenCut: The Best Open-Source CapCut Alternative for Web, Desktop & Mobile — Next Horizon411 views · 1 comment
- Oct 5, 2026OpenCut: The FREE Open-Source CapCut Killer (92,000+ Stars) — The Daily Commit272 views
- Aug 19, 2026OpenCut - Open Source Video Editor — Dann Paker AI219 views
- Jul 14, 2026Will AI auto-edit videos become real? OpenCut's new architecture: Headless Mode and AI agents — ... — DevCovery217 views
- Jul 14, 2026GitHub - OpenCut-app/OpenCut: The open-source CapCut alternative — GitHub Daily Trend AI Podcast202 views
- Jul 15, 2026OpenCut — GitHub's #1 Trending Repo Today 🔥 #shorts — AI in Minutes162 views
- Sep 26, 2026💡 [Open Source Alternative to Paid Tools] OpenCut: The Free Tool Taking Over GitHub! #shorts — githubrepo_cloud113 views
- Jul 21, 2026OpenCut: The Free, Open-Source CapCut Alternative — Weekend Repos110 views
- Jul 16, 2026OpenCut - GitHub Trending Today — GitHub Trending Digest89 views
- Aug 17, 2026What is OpenCut? The free CapCut alternative with 84K GitHub stars | Hoi Xiu Thoi — DecodedOfficial83 views
- Jul 22, 2026OpenCut — The Video Editor That's Yours to Keep #rust #videoediting — Codephilic Studio49 views
- Aug 17, 2026OpenCut-app/OpenCut — OpenCut is an open source video editor. Timeline, trimming, layers, c… #Shorts — Fresh Commits27 views
- Jul 14, 2026FREE CapCut Pro Alternative: OpenCut saves $9.99/mo — DevTrends Daily5 views · 1 comment
- Jul 14, 2026FREE CapCut Pro Alternative: OpenCut saves $9.99/mo — DevTrends Daily0 views · 1 comment
On GitHub · 21
- Jan 22, 2026[Add App] OpenCut — beclab/apps1 reaction
- Aug 17, 2026Github trending [OpenCut-app/OpenCut] 开源视频编辑器重写中 — web1992/github-trending0 reactions
- Aug 15, 2026Developer Race — OpenCut — Studio Video Editing — 8x8org/.github0 reactions
- Aug 9, 2026Add August 9 OpenCut content post — olufemi424/content-viewer0 reactions
- Jul 27, 2026STELLA POLARE: clip multicam in -> Shotloom fa tutto -> precisino raffina (dashboard Shotloom, no OpenCut) — Shotloom/Shotloom0 reactions · 11 comments
16 more on GitHub
- Jul 18, 2026Add missing contributing guide for roadmap link — ncardian/OpenCut0 reactions
- Jul 17, 2026Github trending [OpenCut-app/OpenCut] 多端开源视频编辑器 — web1992/github-trending0 reactions
- Jul 16, 2026Github trending [OpenCut-app/OpenCut] 跨平台开源视频编辑器 — web1992/github-trending0 reactions
- Jul 15, 2026Github trending [OpenCut-app/OpenCut] 免费开源视频编辑器重写中 — web1992/github-trending0 reactions
- Jul 14, 2026Github trending [OpenCut-app/OpenCut] 开源视频编辑器重构 — web1992/github-trending0 reactions
- Jul 12, 2026video edit — gatrivi/catts0 reactions
- May 11, 2026New Alternative: OpenCut — TheMorpheus407/european-alternatives0 reactions · 1 comment
- Apr 7, 2026提个要求《添加一个 OpenCut 开源版的 剪映,这个很牛X 的哦。》 — linuxeye/bypanel0 reactions · 1 comment
- Mar 16, 2026Enhance Contribution Instructions — en-dash-consulting/n-dx0 reactions · 1 comment
- Nov 29, 2025Fix OpenCut build issues: missing dependencies, Windows long paths, robust installation — Coffee285/aura-video-studio0 reactions · 1 comment
- Nov 29, 2025fix: add missing @opencut/auth and @opencut/db workspace packages — Coffee285/aura-video-studio0 reactions · 1 comment
- Oct 15, 2025Add OpenCut to wishlist — YunoHost/apps0 reactions
- Aug 10, 2025OpenCut:一款免费开源、跨平台的视频编辑器,类似 CapCut,简单易用又无水印,还能保护隐私 — jaywcjlove/quick-rss0 reactions · 1 comment
- Aug 3, 2025[Request]: OpenCut — ScoopInstaller/Main0 reactions · 1 comment
- Jul 11, 2025增加opentCut到应用商店 — 1Panel-dev/appstore0 reactions · 1 comment
- Jul 5, 2025[News] weekly — Yuyz0112/koala-oss-app0 reactions · 8 comments
On the web · 16
- Oct 15, 2026OpenCut: Free CapCut Alternative, Open Source (2026 Guide) — itgnow.vercel.app
- Oct 3, 2026OpenCut: The Open-Source CapCut Alternative, Now Being Rewritten From Scratch · Zendot — zendot.org
- Aug 23, 2026OpenCut Review: Open-Source Video Editor Worth a Slot? — nownexts.com
- Aug 23, 2026OpenCut Review: Open-Source Timeline Editing | OpenFlow — nownexts.com
- Jul 16, 2026I Honestly Evaluated Whether OpenCut Can Be Self-Hosted for Internal Corporate Videos|株式会社ホコサキ — note.com
11 more on the web
- Jun 9, 2026视频创作工具:OpenCut、HyperFrames、social-auto-upload、OpenStoryline、ArcReel-CSDN博客 — blog.csdn.net
- Jun 8, 2026I tried out the free video editing tool 'OpenCut'. It's great that it feels like CapCut and has no ads.|みどりちゃん — note.com
- May 13, 2026A completely free version of CapCut? I tried OpenCut, but CapCut is still superior|わりびきちゃん | Claude skill開発 | AI情報 — note.com
- Apr 20, 2026github - OpenCut:开源、免费、无水印,这才是剪辑软件该有的样子 - 个人文章 - SegmentFault 思否 — segmentfault.com
- Apr 15, 2026OpenCut - video editor for web, desktop, and mobile - LinuxLinks — linuxlinks.com
- Mar 21, 2026OpenCut: Your Open-Source Video Editing Solution — dev.to
- Mar 18, 2026OpenCut — unsubbed.co — unsubbed.co
- Nov 8, 2025OpenCut: Building a Privacy-First Video Editor That Runs Entirely in Your Browser | by Johnny Chen — tsjohnnychan.medium.com
- Aug 6, 2025OpenCutというオープンソースビデオエディタに期待 #OpenCut — qiita.com
- Jul 17, 2025I’ve Been Tracking Free Video Editor OpenCut— Here’s Why 50,000+ Creators Are Betting on It | by Jannis — medium.com
- Jul 12, 2025OpenCut-app: A Next-Generation Open Source Video Editing Platform - Technical Details and Implementation Methods for Engineers|iGami — note.com
On Hacker News · 4
- Jul 13, 2025OpenCut: The open-source CapCut alternative447 points · 151 comments
- Jul 29, 2025Someone made a 128k line PR to OpenCut109 points · 92 comments
- Jul 12, 2025OpenCut: The open-source CapCut alternative3 points
- Jun 23, 2025OpenCut, the open-source CapCut alternative2 points
Where files are headingNew Copilot instructions files have more rules about branches and pull requests, and fewer about code style.
Of the Copilot instructions files we read, the 2,297 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

