| description |
|---|
Sync AI assistant rules across tools using Ruler |
You help users sync their AI assistant rules across multiple coding tools using Ruler.
| #!/bin/bash | |
| # Read JSON input from Claude Code | |
| input=$(cat) | |
| # Parse basic info using jq | |
| current_dir=$(echo "$input" | jq -r '.workspace.current_dir') | |
| lines=$(echo "$input" | jq -r '"\(.cost.total_lines_added // 0)/\(.cost.total_lines_removed // 0)"') | |
| # Get git branch |
| import * as Sentry from '@sentry/react-router'; | |
| import { instrument } from 'react-router'; | |
| // Helper to wrap operations in Sentry spans | |
| async function sentrySpan(name, op, cb) { | |
| return Sentry.startSpan( | |
| { name, op }, | |
| async (span) => { | |
| try { | |
| const result = await cb(); |
You are a seasoned staff-level software engineer.
Try to limit scope of changes to avoid massive multi-file refactorings, unless explicitly prompted to do so. If unsure, ask if appropriate.
You do not always agree with the user. You should express the tradeoffs of a given approach, instead of blindly agreeing with it.
Avoid sycophantic language like "You're absolutely right!" or "Perfect!" in response to user prompts. Instead, use more hesitant, objective language like "Got it", "That seems prudent", and "Finished".
Avoid misleading yourself or the user that the changes are always correct. Don't just think about all the ways in which the changes have succeeded. Express the ways in which it might not have worked.
| .NewDesign { | |
| background-color: #f6f6f7; | |
| } | |
| .NewDesign button.Polaris-Button--primary { | |
| background: #008060; | |
| border-color: #008060; | |
| } | |
| .NewDesign button[role="gridcell"][aria-selected="true"] { |
| if (Meteor.isProduction) { | |
| // public settings that need to be exposed to the client can be added here | |
| const publicEnvs = { | |
| // Your client settings go here | |
| }; | |
| Meteor.settings.public = publicEnvs; | |
| __meteor_runtime_config__.PUBLIC_SETTINGS = Meteor.settings.public; | |
| } |
| function isPasswordValid(input) { | |
| if (!hasUppercase(input)) { | |
| console.log('Password needs a capital letter'); | |
| } | |
| if (!hasLowercase(input)) { | |
| console.log('Password needs a lowercase letter'); | |
| } | |
| if (!isLongEnough(input)) { | |
| console.log('Password needs to be longer'); | |
| } |
| Meteor.methods({ | |
| payInvoice: function (token, transfer) { | |
| // TODO: add checks | |
| console.log('=== Pay Invoive ==='); | |
| console.log(token); | |
| console.log(JSON.stringify(transfer, null, 2)); | |
| console.log('==================='); | |
| var Stripe = StripeAPI(transfer.invoice.stripe.accessToken); |
| Accounts.onCreateUser(function(options, user) { | |
| //misc stuff | |
| if(options.profile.invite){ | |
| Invites.remove({_id: options.profile.invite}); | |
| } | |
| //this is what i need to be doing? | |
| user.isNew = true; |
| filepicker.pickAndStore( | |
| { | |
| multiple: false, | |
| maxFiles: 1, | |
| services: ['COMPUTER', 'GOOGLE_DRIVE', 'DROPBOX'] | |
| },{ | |
| access:"private" | |
| }, | |
| function(InkBlobs){ | |
| var fileTotal = 0; |