Hi - I answer from the OpenSmartRoute documentation: routing, the API, plans and quotas, self-hosting. Ask away, or open a support ticket if you need a person.
Grounded in the docs - follow a source before acting on it.
frontend - Skill - OpenSmartRoute
Skillv1.0.0
frontend
Use existing components where possible. - Avoid using .map() in render functions, and instead, for performance purposes, always default to using a FlatList with renderItem wrapped in useCallback. Focu
Imported from Zernach/teamfront (invoice-me/frontend/AGENTS.md). Install upstream with npx skills add Zernach/teamfront --skill frontend. Copyright stays with the author.
Use existing components where possible.
Avoid using .map() in render functions, and instead, for performance purposes,
always default to using a FlatList with renderItem wrapped in useCallback.
Focus on performance. To ensure the correct packages are used, instead of
using FlatList/ScrollView directly, use the CustomList component and pass in
the appropriate props.
Use the CustomText component for Text.
Use the CustomButton component for buttons.
Use the CustomTextInput component for TextInput.
Use the CustomImage component for Image or ImageBackground.
Add any new colors to the colors file instead of hardcoding them, and pull
from existing colors where possible.
When creating a new component, create a new folder in the components directory
with the name of the component, and add an index.tsx file for the component
code. Use Stylesheet.create for styling. Do not use "export default" for
components (unless it is a screen for expo-router).
Prefer StyleSheet.flatten instead of StyleSheet.compose
If window dimensions are needed, import the existing useResponsive custom hook
In most situations, prefer react-native-reanimated over the built-in Animated
from react-native
If you create any helper utility function scripts, then create a new directory
inside the scripts directory with the name of the utility, and add an
index.ts file for the code.
Use createError from 'scripts/createError' for error creation.
Use it
Copy one of these into your project. Installing also returns the manifest and these snippets.
# after Install: the listing is in your workspace's routing pool - a plan picks it for its slot
curl -s -X POST https://api.opensmartroute.ai/api/v1/route -H 'Authorization: Bearer $OSR_API_KEY' -H 'Content-Type: application/json' -d '{"text": "...", "plan": true}'
Installed into a catalogue, chosen by a router
Install frontend and it becomes one more candidate the router can pick - when it fits.
A listing is a routing target with a manifest: what it does, which domains it covers, what it costs and who publishes it. Once installed it sits beside your own models and tools, is scored like any other candidate for each request, and shows up in the trace when it wins. Ratings come from workspaces that installed it, one per account.
An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.
zernach-teamfront-frontend.ocm.jsonjson
{
"ocm": "1",
"id": "zernach-teamfront-frontend",
"kind": "skill",
"name": "frontend",
"description": "Use existing components where possible. - Avoid using .map() in render functions, and instead, for performance purposes, always default to using a FlatList with renderItem wrapped in useCallback. Focus on performance. To ensure the correct packages are used, instead of using FlatList/ScrollView directly, use the CustomList component and pass in the appropriate props. - Use the CustomText component for Text. - Use the CustomButton component for buttons. - Use the CustomTextInput component for TextInput. - Use the CustomImage component for Image or ImageBackground. - Add any new colors to the colors file instead of hardcoding them, and pull from existing colors where possible. - When creating a new component, create a new folder in the components directory with the name of the component, and add an index.tsx file for the component code. Use Stylesheet.create for styling. Do not use \"export default\" for components (unless it is a screen for expo-router). - Prefer StyleSheet.flatten instead of StyleSheet.compose ",
"publisher": "Zernach",
"version": "1.0.0",
"capabilities": {
"domains": [
"coding"
],
"tags": [
"skill-md",
"github-agents"
],
"languages": [
"en"
]
},
"quality_prior": 0.6,
"examples": [
"Use existing components where possible. - Avoid using .map() in render functions, and instead, for performance purposes, always default to using a FlatList with renderItem wrapped in useCallback. Focus on performance. To ensure the correct packages are used, instead of using FlatList/ScrollView directly, use the CustomList component and pass in the appropriate props. - Use the CustomText component for Text. - Use the CustomButton component for buttons. - Use the CustomTextInput component for TextInput. - Use the CustomImage component for Image or ImageBackground. - Add any new colors to the colors file instead of hardcoding them, and pull from existing colors where possible. - When creating a new component, create a new folder in the components directory with the name of the component, and add an index.tsx file for the component code. Use Stylesheet.create for styling. Do not use \"export default\" for components (unless it is a screen for expo-router). - Prefer StyleSheet.flatten instead of StyleSheet.compose "
],
"primary": false,
"metadata": {
"source": {
"provider": "github-agents",
"repository": "https://github.com/Zernach/teamfront",
"path": "invoice-me/frontend/AGENTS.md",
"ref": "bf2ffdce18b8d02ee290fc6028e68e6ba0fd45a8",
"url": "https://github.com/Zernach/teamfront/blob/bf2ffdce18b8d02ee290fc6028e68e6ba0fd45a8/invoice-me/frontend/AGENTS.md",
"key": "Zernach/teamfront/invoice-me/frontend/AGENTS.md"
}
},
"instructions": "- Use existing components where possible.\n- Avoid using .map() in render functions, and instead, for performance purposes,\n always default to using a FlatList with renderItem wrapped in useCallback.\n Focus on performance. To ensure the correct packages are used, instead of\n using FlatList/ScrollView directly, use the CustomList component and pass in\n the appropriate props.\n- Use the CustomText component for Text.\n- Use the CustomButton component for buttons.\n- Use the CustomTextInput component for TextInput.\n- Use the CustomImage component for Image or ImageBackground.\n- Add any new colors",
"cost": {
"context_tokens": 368
}
}
Fetch it by URL: GET /api/v1/registry/zernach-teamfront-frontend/manifest?version=1.0.0
Reviews
Star ratings from people who tried it. One review per account; edit yours any time.
No reviews yet. Install it, try it, and be the first to rate it.