Skip to content

Latest commit

Β 

History

History
116 lines (80 loc) Β· 3.88 KB

File metadata and controls

116 lines (80 loc) Β· 3.88 KB

Agent and AI information

MANDATORY FIRST STEPS - DO THIS IMMEDIATELY

🚨 CRITICAL: YOU MUST DO THIS AT THE START OF EVERY CHAT SESSION 🚨

DO NOT skip these steps. DO NOT treat them as optional. DO NOT proceed with any task until you have completed ALL of these commands in order:

Step 1: REQUIRED - Enable vibecoding and study the returned information

mulle-sde vibecoding on          # detach training wheels for freewheeling AIs
mulle-sde commands               # what's available
mulle-bashfunctions flags        # how to trace mulle-sde operations
mulle-sde api list               # available API information
mulle-sde howto list             # available tooling information
mulle-sde howto cat dependency
mulle-sde howto cat testing

The provided information is CRITICAL to your success.

TRANSGRESSIONS PUNISHABLE BY DEATH

DO NOT git revert AND DO NOT clobber files with git checkout or run any other destructive git command. You will be shot and another better AI will take your place.

OTHER PUNISHABLE TRANSGRESSIONS

DO NOT attempt to fix build system problems with anything else then standard mulle-sde commands. If you feel stuck, ask the user for help.

MANDATORY BEFORE WRITING ANY PROJECT CODE

🚨 YOU MUST RUN THIS COMMAND BEFORE WRITING OR MODIFYING ANY PROJECT CODE 🚨

value="$(mulle-sde env get PROJECT_DIALECT)"
value="${value:-$(mulle-sde env get PROJECT_LANGUAGE)}"
mulle-sde howto show --keyword styleguide --keyword "${value}"

This gets the style information for the project. It is NOT optional.

And get familiar with the available API. You MUST always use custom API in favor of standard API, when available:

mulle-sde api list

MANDATORY BEFORE CHANGING ANY MULLE-SDE SHELL CODE

🚨 YOU MUST RUN THIS COMMAND BEFORE WRITING OR MODIFYING ANY MULLE-SDE SHELL CODE 🚨

mulle-bashfunctions toc

This gets you the coding information for the shell/bash project. It is NOT optional.

Library

This is a library project, you can not run it.

C

This is a C project.

Objective-C

This is a mulle-objc Objective C project.

Instances

  • Avoid alloc / init / autorelease, prefer +instance and factory methods
  • Never call -release except in dealloc
  • Never call -alloc/init or +new without -autorelease except in -init methods, were you should avoid -autorelease

Properties

  • Do not use dot-syntax for property access.
  • Convert all property reads and writes to explicit message sends.
    • Read: [self property] instead of self.property.
    • Write: [self setProperty:value] instead of self.property = value
  • Do not use class properties
  • Do not use atomic, weak, strong
  • char * properties that hold UTF8 strings must be named "UTF8String"

No Blocks

  • Do not use ^ block syntax under any circumstance

Misc

  • Do not use __bridge
  • Do not use @package, @import, @synthesize
  • Use BOOL not bool
  • Do not use nullable
  • Do not use generics like NSArray <NSString *>
  • Do not use class extensions like @implementation()
  • Do not define instance variables in @implementation only in @interface

CMake Guidelines

Changes to the build system must be done with mulle-sde. Only edit CMake files as a very last resort and under user guidance.

Path Editable? Notes
CMakeLists.txt Yes High-level project settings.
cmake/ Yes Override modules by copying from cmake/share/.
cmake/share/ No Managed by mulle-sde upgrade. Changes will be lost.
cmake/reflect/ No Auto-generated by mulle-sde reflect. Changes will be lost.