How can I force a minimum isolation level in a procedure?
There are a couple of options for determining the transaction isolation level in SQL Server depending on whether you want to include read committed snapshot as separate from read committed.  Once you know what isolation level your session is using, you can implement whatever logic you want.  Something like

IF EXISTS( SELECT 1
             FROM sys.dm_exec_sessions 
            WHERE session_id = @@SPID
              AND transaction_isolation_level &lt; 3 )
BEGIN
  set transaction isolation level repeatable read;
END;