Skip to content

Latest commit

 

History

History
101 lines (67 loc) · 2.92 KB

File metadata and controls

101 lines (67 loc) · 2.92 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 read help

mulle-sde vibecoding on
mulle-sde help

Step 2: REQUIRED - Read howto and api help

mulle-sde howto help
mulle-sde api help

Step 3: REQUIRED - List available commands and howtos

mulle-sde commands
mulle-sde howto list

REMEMBER: mulle-sde howto is THE tool for getting work done in this project. Use it FIRST before attempting any task manually.

MANDATORY BEFORE WRITING ANY CODE

🚨 YOU MUST RUN THIS COMMAND BEFORE WRITING OR MODIFYING ANY 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.

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

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 varibals 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.